swift 2.0 UIGestureRecognizer 添加手勢后造成 tableView 的 didselectrow 無效解決方案

TableView寫了一個登陸界面,帳號和密碼兩個Cell中加入了TextField。由于想在TableView的空白處點擊時收起鍵盤,所以注冊了一個UITapGestureRecognizer來識別手勢。

但這時候 tableView didSelectRowAtIndexPath不執(zhí)行了。


    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        print ("你點不到我")
    }

目測原因是UITapGestureRecognizer截獲了touch事件,導致didSelectRowAtIndexPath方法無法響應(yīng)

查閱了相關(guān)文檔后找到了一種可行的解決方法:重寫UIGestureRecognizerDelegate中的

gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool


    //MARK: 重寫手勢讓tableview能點擊
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        if NSStringFromClass(touch.view!.classForCoder) == "UITableViewCellContentView"{
            return false
        }
        return true
    }

當然不要忘記在class中引用 UIGestureRecognizerDelegate

class viewController: ...,UIGestureRecognizerDelegate

和 tapGesture.delegate=self


    //MARK:- 點擊外部關(guān)鍵盤
    func touchOutsideTextField(){
        let aSelector : Selector = "closeKeyboard"
        let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
        tapGesture.delegate=self
        tapGesture.numberOfTapsRequired = 1
        view.addGestureRecognizer(tapGesture)
    }
    func closeKeyboard(){
        self.view.endEditing(true)
    }

有什么問題歡迎留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容