项目需要写一个地址选择的功能, 整体功能类似与京东的收货地址填写..
主要是在一个原有的ViewController上, 添加一个蒙层
+可以选择地址的页面, 中途遇到了一个问题. 就是地址选择页面的tableview没法响应手指的单击操作. 而双击,长按, 多手指点击是可以的.
one
首先我想到的是 是不是tableView的设置了代理方法,
(BOOL)tableView:(UITableView*)tableView shouldHighlightRowAtIndexPath:(NSIndexPath*)indexPathNS_AVAILABLE_IOS(6_0);
手动设置返回YES, 无效.
two
此处略过一万遍跟tableview相关的各种检测, 无效
THREE
我突然想到一句话"手势响应时大哥"
是不是我在蒙层上添加的gesture拦截了,table的点击操作?
我先在手势代理方法 中对tableview及其cell做了判断. 对于列表的操作直接不响应, 无效.
然后我干脆直接注释掉了在页面上添加的手势, 还是无效
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
forth
临下班之际, 我突然想起来查看是不是父页面上有添加手势?
果然, 父控制器上有手势, 一口老血吐出来..
总结
果然理论还是很重要 , 不至于在找问题的时候横冲直撞.
触摸事件的整个响应过程中, 确实手势是大哥, 有触摸事件穿起来时, 一但手势接受了事件, 就会取消掉其他点击事件的传递和处理.
但是需要注意的是, 对于手势和uibutton在一起的, 还是会优先响应button的.