UIControl的事件不触发
今天发现一个自定义的UIControl控件的事件无法触发,查了以下发现原因是
UIControl被置于一个有TapGestureRecognizer的SuperView上 根据搜索这个问题2010年时在UIButton上也存在写了一段Demo测试了一下
UIButton被Apple处理过了
经过Demo测试发现,在一个存在TapGesture的View上,UIButton的TouchUpInside可以正确被触发,但是自定义的UIControl不行
具体原因猜测是因为GestureRecognizer会取消掉Touch的生命周期,看来在苹果的底层传递机制上,是先进行Gesture的遍历,才会去对Touch做处理
在SuperView识别到了Gesture后,UITouch的传递就会被取消掉,导致子View无法触发Tracking事件
Demo
1 | public class GestureSuperView: UIView { |