美文网首页cocos2dx
UIButton延时触发问题

UIButton延时触发问题

作者: SHUTUP | 来源:发表于2015-10-29 17:31 被阅读1504次

    前言

    最近项目在真机测试时,发现了一个问题:一个按钮的点击事件在按钮左侧和右侧居然有差异。表现为延时触发或者完全无触发。

    网络上得参考文章

    UIControlEventTouchDown即按钮按下时应触发的方法。实际使用过程中会出现延迟响应或间歇无响应,但是放开手指时会直接响应UIControlEventTouchDown、UIControlEventTouchUpInside两个方法,这种情况下,按下按钮不响应任何事件,当移动手指时会响应UIControlEventTouchDown。
    1.延迟响应:
    一般是因为button放在了UIScrollVIew或UITableView上面,按下按钮时系统会判断是不是滑动手势。将UIScrollVIew的delaysContentTouches,canCancelContentTouches
    两个属性都设置为NO;
    2.无响应:查到的资料,有人说 UIControlEventTouchDown事件是一旦手指碰到按钮就调用了,这样在iOS7上会产生一个冲突,由于iOS7加上了手势滑动返回这么一个动作, 在手势滑动返回时那个区域是不允许有UIControlEventTouchDown事件的,不然就会有事件冲突了,系统不知道是要准备返回还是要点击那个Button, 所以就加上了TouchDown事件的一个延迟响应。

    解决方案:
    1.禁止所有滑动返回的手势,让TouchDown能够正常响应 
    self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan=NO;
    2.重写UIButton,捕捉所有的手势事件然后重写。
    

    这个我测试无效果,可能是我的姿势不对?我的按钮是在iPad横屏时靠右下角的位置,后来发现将按钮上移一点就没问题了(我上移了20个像素)。以上两种情况均是iPad air测试通过,仅供参考。

    我的解决

    我的按钮在屏幕右下,使用第二种方式解决。

    相关文章

      网友评论

      • 前年的邂逅_Jerry:楼主,问你一个问题,把按钮放在屏幕最下面,将宽度调成屏幕宽,高度为30。按钮的左半边UIControlEventTouchDown延时触发。方案二中:“重写UIButton,捕捉所有的手势事件然后重写。”能发布下代码吗
        前年的邂逅_Jerry:@烟雨寒弦 https://www.jianshu.com/p/ac821fb9b3d0 这是解决方案,你看下。
        烟雨寒弦:你是怎么解决的?
        我发现我也是这样的

      本文标题:UIButton延时触发问题

      本文链接:https://www.haomeiwen.com/subject/wzcfhttx.html