iOS on touch down 不及时调用的解决

作者: iOS___Android | 来源:发表于2016-06-20 11:53 被阅读528次

    1. 背景

    今天自定义了一个view , 并截取了touchesBegan 事件,5s 里边可以正常触发此事件,但是6plus 里边 touchesBegan 和 touchesEnd 几乎同时调用,让我中间的动画做不成,如图


    点击触发的时间不对.gif

    蓝色的view,点击右边一切都正常,点击左边就不正常,两个时间被同时调用了

    2. 原因

    当 点击蓝色view 的左侧时, 系统不知道用户点击是为了滑动navigation ,还是为了响应蓝色的view, 所以系统会等待用户的下一步动作,所以当用户没有滑动,而只是简单地点击事件时,再出发。所以触发开始时间和点击开始时间几乎是同时的。默认情况下,系统的navigation 用户只有在屏幕最左侧滑动时才会有响应,所以当蓝色view 的右边被点击时系统马上就知道点要触发哪一个了。所以一切正常,两个时间不会同时调用。

    3.解决方法

    告诉系统不要等待判断。

    -(void)viewDidLoad{
        [super viewDidLoad];
        self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan = NO;
    }
    
    点击事件正常.gif

    4.补充

    有些时候可能不只有navigation 干扰点击时间,也许会是scrollview ,collectionview ,或者 tableview. 此时解决方法一样,如下:

        table.delaysContentTouches = NO;
        table.canCancelContentTouches = NO;
    

    相关文章

      网友评论

        本文标题:iOS on touch down 不及时调用的解决

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