关于UITapGestureRecognizer,UIButton,滚动视图的didSelectItemAtIndexPath点击事件问题

背景.self.view 添加tap手势, 页面上创建一个集合视图,实现didSelectItemAtIndexPath方法,另一处添加一个按钮,实现点击事件


     1.手势不设置tapGes.cancelsTouchesInView,默认是YES

        点击按钮,只响应按钮点击事件

        点击cell,只响应tap手势(未响应didSelectItemAtIndexPath方法)

     2.手势设置tapGes.cancelsTouchesInView = NO;

        点击按钮,先响应tap手势,再响应按钮点击事件

        点击cell,先响应tap手势,再响应didSelectItemAtIndexPath

     总结:

     A Boolean value affecting whether touches are delivered to a view when a gesture is recognized.

     手势的cancelsTouchesInView属性:作用于GestureRecognizers(手势识别)与触摸事件之间联系的属性。

     默认为YES,这种情况下当手势识别器识别到touch之后,会发送touchesCancelled给hit-test view以取消hit-test view对touch的响应,这个时候只有手势识别器响应touch。

     当设置成NO时,手势识别器识别到touch之后不会发送touchesCancelled给hit-test,这个时候手势识别器和hit-test view均响应touch。

你可能感兴趣的:(关于UITapGestureRecognizer,UIButton,滚动视图的didSelectItemAtIndexPath点击事件问题)