UIButton 不响应或延迟响应 UIControlEventTouchDown

来源:互联网 发布:琼州海峡隧道 知乎 编辑:程序博客网 时间:2024/05/17 01:01

UIControlEventTouchDown使用过程中会出现延迟响应或间歇无响应,一直响应特别的慢,一开始以为是程序哪里写错了,最终发现程序没有问题、就上网找些程序员们解答,最终解决问题,在此在此记录一下解决方案方便以后查找,UIButton的事件中,当你放开手指时会直接响应UIControlEventTouchDown、UIControlEventTouchUpInside两个方法,这种情况下按下按钮不响应任何事件,当移动手指时会响应UIControlEventTouchDown。

1.延迟响应:

一般是因为button放在了UIScrollVIew或UITableView上面,按下按钮时系统会判断是不是滑动手势。将UIScrollVIew的delaysContentTouches、 canCancelContentTouches 两个属性都设置为NO;

2.无响应:

    UIControlEventTouchDown事件是一旦手指碰到按钮就调用了,这样在iOS7上会产生一个冲突,由于iOS7加上了手势滑动返回这么一个动作,
    在手势滑动返回时那个区域是不允许有UIControlEventTouchDown事件的,不然就会有事件冲突了,系统不知道是要准备返回还是要点击那个UIButton,
    所以就加上了TouchDown事件的一个延迟响应。
    解决方案   

  •     禁止所有滑动返回的手势,让TouchDown能够正常响应 self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
  •     有人说也可以重写UIButton,捕捉所有的手势事件然后重写”。没有测试。。
  • 原创粉丝点击