UITapGestureRecognizer 在 Swift 中的 SearchField Class 中破坏了 UITableView didSelectRowAtIndexPath?
UITapGestureRecognizer breaks UITableView didSelectRowAtIndexPath in SearchField Class in Swift?
我正在将此 库 用于 SearchText 字段
https://github.com/apasccon/SearchTextField
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard")))
}
func dismissKeyboard()
{
ClientList.resignFirstResponder()
self.view.endEditing(true)
}
关闭键盘正在工作,但没有调用 didSelectRowAtIndexPath,所以我无法select任何东西
参考图片:
我完成的部分解决方案:
func hideKeyboard(gestureRecognizer: UIGestureRecognizer) {
let point = gestureRecognizer.locationInView(ClientList.tableView)
let indexPath = ClientList.tableView!.indexPathForRowAtPoint(point)
if indexPath != nil {
return
}
if ClientList.becomeFirstResponder() {
ClientList.resignFirstResponder()
}
}
但现在的问题是我还有其他列表,我该如何实现其他列表?
手势的目标是谁?我认为它应该是列表,因为它是您点击的内容并且位于视图上方
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
将此添加到 viewDidLoad
并添加此功能
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
你可以这样解决这个问题
ViewDidLoad
self.tap = UITapGestureRecognizer(target: self, action: "viewTapped:")
self.tap.delegate = self
self.view.addGestureRecognizer(self.tap)
函数
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view != nil && touch.view!.isDescendantOfView(self.tableView) {
return false
}
return true
}
我正在将此 库 用于 SearchText 字段
https://github.com/apasccon/SearchTextField
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard")))
}
func dismissKeyboard()
{
ClientList.resignFirstResponder()
self.view.endEditing(true)
}
关闭键盘正在工作,但没有调用 didSelectRowAtIndexPath,所以我无法select任何东西
参考图片:
我完成的部分解决方案:
func hideKeyboard(gestureRecognizer: UIGestureRecognizer) {
let point = gestureRecognizer.locationInView(ClientList.tableView)
let indexPath = ClientList.tableView!.indexPathForRowAtPoint(point)
if indexPath != nil {
return
}
if ClientList.becomeFirstResponder() {
ClientList.resignFirstResponder()
}
}
但现在的问题是我还有其他列表,我该如何实现其他列表?
手势的目标是谁?我认为它应该是列表,因为它是您点击的内容并且位于视图上方
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
将此添加到 viewDidLoad
并添加此功能
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
你可以这样解决这个问题
ViewDidLoad
self.tap = UITapGestureRecognizer(target: self, action: "viewTapped:")
self.tap.delegate = self
self.view.addGestureRecognizer(self.tap)
函数
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view != nil && touch.view!.isDescendantOfView(self.tableView) {
return false
}
return true
}