之前在做語(yǔ)音聊天時(shí)發(fā)現(xiàn)過(guò)這個(gè)問(wèn)題炒瘸,當(dāng)UIView距離手機(jī)屏幕底部過(guò)近時(shí)达传,Touch事件與系統(tǒng)手勢(shì)沖突碌更,導(dǎo)致常常延遲1s才進(jìn)入Touch事件瓶籽,而且也接收不到touchCanceled的回調(diào)。
今天在寫(xiě)修改UIButton點(diǎn)擊效果的時(shí)候又出現(xiàn)了這個(gè)問(wèn)題崖媚,在修改這個(gè)問(wèn)題后亦歉,想想還是在簡(jiǎn)書(shū)上把解決辦法記錄一下,讓后來(lái)者可以不用走我的彎路至扰。
- (void)clearSystemGestureEffect
{
NSArray *windows = [UIApplication sharedApplication].windows;
for (UIWindow *window in windows) {
for (UIGestureRecognizer *gesture in window.gestureRecognizers) {
//系統(tǒng)手勢(shì)識(shí)別過(guò)程中不打斷Touch時(shí)間的傳遞鳍徽,用處:
//1. 可防止touch事件延遲(實(shí)測(cè)有TableView時(shí)延遲高達(dá)0.8s)
//2. 可防止Touch事件被系統(tǒng)手勢(shì)捕獲,即使被捕獲敢课,也能正常收到touchCanceled的回調(diào)
gesture.delaysTouchesBegan = NO;
gesture.delaysTouchesEnded = NO;
}
}
}
在需要的地方調(diào)用這個(gè)方法就好了阶祭。
demo地址 有興趣的可以下載試試