今天遇到一个问题,点击tableview 没有 执行
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
,响应事件响应到tableview 下面的view 的手势 tap事件了。后来发现原因是UITapGestureRecognizer截获了touch事件,导致didSelectRowAtIndexPath方法无法响应
解决方法:
重写UIGestureRecognizerDelegate中的
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool方法,
1 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 2 print("-------------------(NSStringFromClass((touch.view?.classForCoder)!))-------") 3 print("----------********---------(object_getClass(touch.view)))-------") 4 if NSStringFromClass((touch.view?.classForCoder)!) == "UITableViewCellContentView"{ 5 return false 6 } 7 return true 8 }
再次调试,这回didSelectRowAtIndexPath响应了,解决UITapGestureRecognizer手势截获Touch事件的问题。也就是说不会响应tap 手势了。(我这写的就是个坑啊)
参考文章:http://m.blog.csdn.net/blog/dragonsilaya0727/21798597