iOS会在搜索栏外部轻击键盘

时间:2014-07-31 07:11:56

标签: ios keyboard uisearchbar dismiss

我有一个标签栏应用程序,在其中一个标签中我有一个搜索栏。

正如用户关注搜索栏时所预期的那样,键盘会出现,但会显示在标签栏上。因此,当用户点击搜索栏外,我想将其解雇。

我使用以下代码:

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];
}

问题是,即使我点击了不是我想要的行为的搜索选项,键盘也会被解除。我希望键盘仅在点击位于搜索栏之外时才会被忽略。

enter image description here

我还尝试在recognizer.view中使用handleTap来识别点击的执行时间,但是只有一个视图和那个案例,并且无法识别点击位置。

所以问题是:当用户点击搜索栏时,如何解除键盘,而当用户点击搜索选项按钮时,如何不关闭键盘。

1 个答案:

答案 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];
 }

enter image description here