我有一堆搜索框。在搜索框下有表格视图。
如果用户单击表格视图(或搜索框外的任何内容),我希望搜索框失去第一响应者状态。
但是,tableview 没有修饰动作。
所以我在 tableview 后面添加了一个大按钮。希望触摸事件由大按钮处理。
鉴于 table view 完全覆盖了 tableview,这是行不通的。
所以我该怎么做?
我有一堆搜索框。在搜索框下有表格视图。
如果用户单击表格视图(或搜索框外的任何内容),我希望搜索框失去第一响应者状态。
但是,tableview 没有修饰动作。
所以我在 tableview 后面添加了一个大按钮。希望触摸事件由大按钮处理。
鉴于 table view 完全覆盖了 tableview,这是行不通的。
所以我该怎么做?
我不确定您是使用 searchDisplayController 还是仅使用 searchBar。但如果你使用 searchDisplayController,你可以实现委托方法
-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
当用户单击取消或透明视图(空搜索)时将调用它。
解决您的案例的另一种方法是设置 bool 以检查搜索框是否正在保留响应者(在搜索获取响应者时设置它)。在 cellForRowAtIndexPath 处,检查该值是否,然后 resignFirstResponder 并将值设置为 false。
希望这有帮助
更新:Apple使用 searchDisplayController的示例代码