ios  按钮的touchDown事件延迟

当按钮的位置位于控制器的最底部时,touchDown事件会有所延迟,例如控制器最底部有一个语音按钮,长按语音按钮说话,这时你会发现事件会有所延迟,这是因为跟系统屏幕的底部边缘手势冲突了

方法一:

在你的控制器中,重写下面这个方法

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures {
    if (isIPhoneX) { // isIPhoneX是一个宏,判断是否为iPhoneX及以上机型
        return UIRectEdgeNone;
    }
    return UIRectEdgeBottom;
}

方法二: (在控制器的viewDidAppear:方法和viewWillDisappear:添加以下代码)

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    for(UIGestureRecognizer* gesture in self.view.window.gestureRecognizers){
        gesture.delaysTouchesBegan = NO;
    }
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    for(UIGestureRecognizer* gesture in self.view.window.gestureRecognizers){
        gesture.delaysTouchesBegan = YES;
    }
}

个人更推荐方法二,方法二中之所以在viewWillDisappear:方法中设置回yes,是因为window是一个单例,如果改变了属性值会影响全局

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容