UIControlEventTouchDown 延迟响应

一个 UIButton,其上绑定了 UIControlEventTouchDown 事件。在模拟器上一切正常,反应速度很快,但在真机上出现了很怪异的反应迟钝。通过观察发现,如果按下按钮的右半边,也就是屏幕右边一侧的部分,则不会有反应迟钝现象。如果按下按钮的左半边,也就是屏幕左边一侧的部分,只要按下之后手指不移动,则会一直无响应,直到手指在按钮上产生了位移,才会响应事件。

经调查,这个问题自 iOS 7 开始出现,出现原因是由 iOS 7 开始引入的右滑返回。只需设置以下属性即可避免该问题的出现。

1
[self.navigationController.interactivePopGestureRecognizer setDelaysTouchesBegan:NO];

而且,这样并不会影响正常的右滑返回。