我有一个要搜索的文本字段,其中包含自动填充列表(UITableView
)以显示结果。我想在用户在文本字段外点击时关闭键盘,这是有效的;但它打破了我的表交互(用户可以点击其中一个结果来添加记录)。
我已尝试使用shouldReceiveTouch
UIGestureRecognizer
(source1,source2),但函数未被调用。我有
将UIGestureRecognizerDelegate
添加到ViewController.swift,如下所示:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate,UIGestureRecognizerDelegate {...}
将UITapGestureRecognizer
对象添加到情节提要中并将其链接到我的视图
添加IBAction
功能以关闭键盘并将其链接到UITapGestureRecognizer
对象:
@IBAction func endEditing(sender: AnyObject) {
addButton.hidden = true
autocompleteList.hidden = true
self.view.endEditing(true)
}
被叫shouldReceiveTouch
:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
println("in shouldReceiveTouch")
gestureRecognizer.delegate = self
if (touch.view == autocompleteList){
println("touching autocomplete list")
return false
}
else{
println("touching elsewhere")
return true
}
}
运行应用程序后,我了解到shouldReceiveTouch
永远不会从控制台调用,所以我的猜测是我没有正确设置代理;我一直在这里和那里看了几个小时,但仍然没有运气。其他实现相同目标的解决方案也是受欢迎的。任何帮助表示赞赏!感谢