我有一个标签栏应用程序,在其中一个标签中我有一个搜索栏。
正如用户关注搜索栏时所预期的那样,键盘会出现,但会显示在标签栏上。因此,当用户点击搜索栏外,我想将其解雇。
我使用以下代码:
在viewDidLoad
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleTap:)];
[tapRecognizer setCancelsTouchesInView:NO];
[self.tableView addGestureRecognizer:tapRecognizer];
和handleTap
- (void) handleTap: (UITapGestureRecognizer *)recognizer
{
[self.theSearchBar resignFirstResponder];
}
问题是,即使我点击了不是我想要的行为的搜索选项,键盘也会被解除。我希望键盘仅在点击位于搜索栏之外时才会被忽略。
我还尝试在recognizer.view
中使用handleTap
来识别点击的执行时间,但是只有一个视图和那个案例,并且无法识别点击位置。
所以问题是:当用户点击搜索栏时,如何解除键盘,而当用户点击搜索选项按钮时,如何不关闭键盘。
答案 0 :(得分:1)
试试这个
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view.superview.superview endEditing:YES]; //or [self.view.superview endEditing:YES];
[self.theSearchBar resignFirstResponder];
}
其他选择
将Cancel Button
添加到UI search bar
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar{
[searchBar resignFirstResponder];
}