Ios 搜索栏单击检测

Ios 搜索栏单击检测,ios,objective-c,uisearchbar,Ios,Objective C,Uisearchbar,我有一个搜索栏,我想检测用户何时单击它,然后在用户在搜索栏中编辑时禁用按钮。我怎么能做到这一点,因为我试图做你将看到的上面,但它从来没有调用 -(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{ NSLog(@"yes"); } 调用了其他方法,如searchDisplayController self.searchBar.delegate=self 但是没有结果。当用户点击键盘上的“搜索”(返回

我有一个搜索栏,我想检测用户何时单击它,然后在用户在搜索栏中编辑时禁用按钮。我怎么能做到这一点,因为我试图做你将看到的上面,但它从来没有调用

-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
        NSLog(@"yes");
    }
调用了其他方法,如
searchDisplayController

self.searchBar.delegate=self 

但是没有结果。

当用户点击键盘上的“搜索”(返回)按钮时,将调用
searchBarSearchButtonClicked:
方法。从您的问题中,我了解到您希望检测用户何时点击搜索栏,以输入搜索文本。如果是这种情况,则需要在UISearchBarDelegate中实现
searchBarShouldBeginEditing:
searchBarTextDidBeginEditing:
方法。 比如说,

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{
    NSLog(@"yes");
    return YES;
}

您可以直接使用UIsearchbar的委托来获取click事件。您可以使用此委托检查单击。为了结束第二次编辑

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
    NSLog(@"Yes");
    return YES;
}
结束编辑

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
    return YES;
}

答案的快速版本:

  • UISearchBarDelegate添加到视图控制器,并指定其
  • 委托给self搜索栏。委托=self使用
  • 搜索栏应取消编辑单击搜索栏搜索按钮

     func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
       return true
    }
    

  • 哦,是的,你说得对。对不起,我错了,这个方法实际上应该返回BOOL。我已经编辑了我的答案。该方法需要返回YES,textField才能成为第一响应者。
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    }