簡體   English   中英

點擊手勢以使用TableView關閉UITextField

[英]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單元格?

無需添加任何手勢即可關閉桌面上的鍵盤,iOS SDK本身提供了一個名為keyboardDismissMode的屬性來關閉鍵盤 我們可以從IB本身獲取此屬性,請檢查下圖以供參考。

在此處輸入圖片說明

您需要實現手勢識別器委托。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM