简介

ExclusiveTouchUIView的一个属性,默认为NO(不互斥),设置UIView接收手势的互斥性为YES,可以防止多个响应区域被“同时”点击,“同时”响应的问题,从而避免bug。具体来说,就是当设置了exclusiveTouch=YESUIView是事件的第一响应者,那么到你的所有手指离开前,其他的视图UIView是不会响应任何触摸事件的,对于多点触摸事件,这个属性就非常重要,值得注意的是:手势识别(GestureRecognizers)会忽略此属性。

使用

可以通过 [[UIView appearance] setExclusiveTouch:YES]; 这样调用。 UIImageViewUILabel等,都可以添加手势,响应方式和UIButton相同。 全局设置响应区域的点击手势的互斥,是有效的。 但使用此方法时,在iOS 8.0 ~ iOS 8.2(目前仅在该版本下发现问题)下会引起崩溃。

用途

举个例子:在出现UICollectionView之前,我们如果要实现类似GridView的控件,通常做法是在UITableViewcell上加载几个子视图,来模拟实现GridView视图,但对于每一个子视图来说,就需要使用exclusiveTouch,否则当同时点击多个子视图,那么会触发每个子视图的事件。导致多次跳转等情况的发生。