iOS UITableview 不响应didSelectRowAt


问题:

tableview添加在一个View上,其它代理都能正常运行,唯独cell的点击事件不响应。

分析探索:

长按住cel,同时鼠标在cell里面滑行一段距离,发现响应了点击事件。考虑单点事件可能被拦截了。

再一想,似乎自己在tableview的父视图View上加了UITapGestureRecognizer事件,原因就在这里了UITapGestureRecognizer拦截掉了cell的点击事件。

解决办法很多,下面是一种

extension DZLoginPhoneNumberSelectView: UIGestureRecognizerDelegate {

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {

        guard let view = touch.view?.superview else { return true }

        if view.isKind(of: UITableViewCell.classForCoder()) {
            return false
        }
        return true
    }
}