问题描述
在iOS7下开发,真机调试时,UIButton的其他事件响应都正常,但是UIControlEventTouchDown事件响应会延迟,而且不同响应区域发生的延时情况不同,有时延迟1s以后响应TouchDown事件,有时候一直按着不动就不响应事件,只有把手指轻轻滑动下才能正常响应TouchDown事件。
问题分析
UIControlEventTouchDown事件是一旦手指碰到按钮就调用了,这样在iOS7上会产生一个冲突,由于iOS7加上了手势滑动返回这么一个动作,在手势滑动返回时那个区域是不允许有UIControlEventTouchDown事件的,不然就会有事件冲突了,系统不知道是要准备返回还是要点击那个Button,所以就加上了TouchDown事件的一个延迟响应。
解决方案
- 禁止所有滑动返回的手势,让TouchDown能够正常响应
self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
- 重写UIButton,捕捉所有的手势事件然后重写
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步