Скрыть клавиатуру, нажав кнопку ввода или кнопку поиска - PullRequest
4 голосов
/ 29 августа 2011

Я добавил кнопку 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. Я хотел бы скрыть клавиатуру при нажатии кнопки ввода или поиска. Как я могу это сделать?

Ответы [ 6 ]

10 голосов
/ 29 августа 2011

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

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}
4 голосов
/ 27 октября 2015

для Свифта

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
}
4 голосов
/ 29 августа 2011

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

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

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

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

2 голосов
/ 29 августа 2011

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

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

и для ввода (не проверено)

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

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

1 голос
/ 14 ноября 2013

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

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

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

self.searchBarName.delegate = self;

в функции viewDidLoad.

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

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

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

0 голосов
/ 14 ноября 2013

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

...