我的视图控制器设置如下:UISearchBar
在屏幕顶部,键盘在底部,以及它们之间的其他视图:自定义UIView
,UIView
,UITableView
。当我点击UIButton
内的表格视图单元格和UIView
时,可以成功触发我的操作,同时使UISearchBar
仍在屏幕上可见。但是,当我点击没有按钮的UIView
时,这会触发searchBarShouldEndEditing
,好像搜索栏失去了焦点。我想禁用此行为,只允许“取消”按钮和键盘的“完成”按钮触发UISearchBar
关闭。
我认为这与冒泡效果有关,并尝试实施此修复程序:
extension UIViewController : UIGestureRecognizerDelegate{
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
return touch.view == gestureRecognizer.view
}
@IBAction func didTap(_ gestureRecognizer : UITapGestureRecognizer ) {
//
}
但是这不能解决问题,UISearchBar
仍然呼叫searchBarShouldEndEditing
。当然,我可以向searchBarShouldEndEditing
添加逻辑以返回false
,但不确定这样做是否足够有效。
在点击UISearchBar
之类的其他元素时,如何确保UIView
保留在原位?