[英]Tap Gestures to Dismiss UITextField with TableView
我有一個帶有UITextField的視圖,該視圖在它下面的UITableView上執行一些搜索操作。
問題是,當我設置一個輕擊手勢以在UITextField之外的觸摸中消除鍵盤時,似乎取消了TableView單元格的didSelect方法。
這是我當前在viewDidLoad中使用的代碼:
let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
tapRecognizer.numberOfTapsRequired = 1
self.view.addGestureRecognizer(tapRecognizer)
func handleSingleTap(recognizer: UITapGestureRecognizer) {
self.view.endEditing(true)
}
我該如何進行設置,以使UITextField外部的觸摸消除鍵盤,但仍允許我選擇TableView單元格?
您需要實現手勢識別器委托。
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,shouldReceiveTouch touch: UITouch) -> Bool
{
if ([touch.view isDescendantOfView:yourTableView]) {
return false
}
return true
}
這樣,它仍然不會影響您對表格視圖的觸摸,仍然可以選擇表格視圖。
不鼓勵使用太多點擊手勢。 當它覆蓋我的自定義按鈕時,我遇到了一個問題。 我用iOS的XCDFormInputAccessoryView
解決了它。 它對我來說很好。
設置cancelsTouchesInView
財產UITapGestureRecognizer
為true。
let tapGesture = UITapGestureRecognizer(target: self, action: Selector("hideKeyboard"))
tapGesture.cancelsTouchesInView = true
tableView.addGestureRecognizer(tapGesture)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.