當(dāng)按鈕的位置位于控制器的最底部時(shí),touchDown事件會(huì)有所延遲,例如控制器最底部有一個(gè)語(yǔ)音按鈕,長(zhǎng)按語(yǔ)音按鈕說(shuō)話,這時(shí)你會(huì)發(fā)現(xiàn)事件會(huì)有所延遲,這是因?yàn)楦到y(tǒng)屏幕的底部邊緣手勢(shì)沖突了
方法一:
在你的控制器中,重寫(xiě)下面這個(gè)方法
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures {
if (isIPhoneX) { // isIPhoneX是一個(gè)宏,判斷是否為iPhoneX及以上機(jī)型
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;
}
}
個(gè)人更推薦方法二,方法二中之所以在viewWillDisappear:方法中設(shè)置回yes,是因?yàn)閣indow是一個(gè)單例,如果改變了屬性值會(huì)影響全局