Скрыть клавиатуру при нажатии кнопки enter или кнопки поиска


Я добавил кнопку UISearchBar внутри кнопки UIBarButtonItem на панели инструментов.

В следующей форме:

// search bar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 260, 44)];
UIBarButtonItem *searchBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
[searchBar release];

[buttons addObject:searchBarButtonItem];

Теперь проблема в том, когда я нажимаю на клавиатуру UISearchBar появляется. Я хотел бы скрыть клавиатуру при нажатии на кнопку enter или search. Как я могу это сделать?

6 3

6 ответов:

Реализуем метод из UISearchBarDelegate:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}

Вам необходимо обработать UISearchBarDelegate методы протокола .

В следующих методах вызовите -resignFirstResponder Метод UISearchBar.

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar

Подробно описанные выше методы делегирования можно найти вофициальном документе Apple . Я часто отказываюсь от первого ответчика внутри этих методов делегирования в качестве конца поиска.

Вы можете использовать метод делегата UISEarchBar

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
   [searchBar resignFirstResponder];
}

И для enter (не проверено)

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;   // called when text changes (including clear)
{
    if ([searchText isEqualToString:@"\n"])
               [searchBar resignFirstResponder];
}

Надеюсь, это поможет вам...

Для Swift

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
}

В заголовочном файле добавьте или подключите к выходу UISearchBar: должно выглядеть примерно так:

@property (weak, nonatomic) IBOutlet UISearchBar *searchBarName;

Затем в конструкторе добавьте следующее:

self.searchBarName.delegate = self;

В функции viewDidLoad.

Затем добавьте следующую функцию:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [self.searchBarName resignFirstResponder];
}

Также, Как упоминалось выше, убедитесь, что это добавлено/расширено в заголовке
UISearchBarDelegate

Используйте [textField endEditing:YES];, это должно работать для вас, или вы можете создать oject кнопки ur и сделать [self.buttonObj resignFirstResponder]