當(dāng)按鈕的位置位于控制器的最底部時嗤堰,touchDown事件會有所延遲美侦,例如控制器最底部有一個語音按鈕,長按語音按鈕說話檬寂,這時你會發(fā)現(xiàn)事件會有所延遲,這是因為跟系統(tǒng)屏幕的底部邊緣手勢沖突了
方法一:
在你的控制器中戳表,重寫下面這個方法
- (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:方法中設(shè)置回yes匾旭,是因為window是一個單例镣屹,如果改變了屬性值會影響全局