美文网首页iOSiOS-swiftSwift Dev
swift 2.0 UIGestureRecognizer 添加

swift 2.0 UIGestureRecognizer 添加

作者: x1911 | 来源:发表于2015-10-14 17:55 被阅读2031次

TableView写了一个登陆界面,帐号和密码两个Cell中加入了TextField。由于想在TableView的空白处点击时收起键盘,所以注册了一个UITapGestureRecognizer来识别手势。

但这时候 tableView didSelectRowAtIndexPath不执行了。


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

目测原因是UITapGestureRecognizer截获了touch事件,导致didSelectRowAtIndexPath方法无法响应

查阅了相关文档后找到了一种可行的解决方法:重写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:- 点击外部关键盘
    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)
    }

有什么问题欢迎留言

相关文章

网友评论

本文标题:swift 2.0 UIGestureRecognizer 添加

本文链接:https://www.haomeiwen.com/subject/nywocttx.html