ios  按钮的touchDown事件延迟

2018-11-07  本文已影响29人  S型身材的猪

当按钮的位置位于控制器的最底部时,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是一个单例,如果改变了属性值会影响全局

上一篇 下一篇

猜你喜欢

热点阅读