Скрыть клавиатуру при нажатии кнопки 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 ответов:
Реализуем метод из
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