問題描述:window的根控制器上添加了UITableView绸硕,還有側(cè)邊欄視圖,起初為了實現(xiàn)拖動完成側(cè)邊欄顯示/不顯示的效果魂毁,在根控制器視圖上也添加了UIPanGestureRecognizer
平移手勢玻佩。在進(jìn)行UITableView的cell編輯(移動操作時),起先在設(shè)置tableView :[self.tableView setEditing:YES animated:YES];為編輯狀態(tài)并進(jìn)行移動操作席楚,并不會與UIPanGestureRecognizer手勢沖突咬崔,但是cell有點擊選中didSelectRowAtIndexPath,并[self presentViewController:newVC animated:YES completion:nil];present模態(tài)彈出新控制器操作,等完成操作dismiss返回時烦秩,再去移動cell操作時垮斯,則會出現(xiàn)手勢沖突并導(dǎo)致有側(cè)邊欄出現(xiàn)的問題(側(cè)邊欄是通過平移手勢實現(xiàn))。
疑點:1只祠、為什么是進(jìn)行了present操作之后才有的手勢沖突兜蠕?
??????? 2、手勢沖突的本質(zhì)原因怎么解決抛寝?
找了網(wǎng)上很多解決手勢沖突的辦法均不奏效熊杨,例如:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == _panGesture) {
if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
return NO;
}
}
return YES;
}
又例如在present之前關(guān)閉tableView編輯狀態(tài),dismiss之后再進(jìn)入編輯狀態(tài)盗舰;又例如在手勢action方法中做文章晶府;有例如禁用/打開手勢等等......
最后轉(zhuǎn)換思路:通過在進(jìn)入編輯狀態(tài)之后,移除添加的UIPanGestureRecognizer手勢:[self.view removeGestureRecognizer:_panGesture];? 等完成編輯岭皂,再添加平移手勢[self.view addGestureRecognizer:_panGesture];
雖然這解決了我的問題郊霎,但究其沖突本質(zhì),并未解決爷绘,對于疑點1书劝、2进倍,歡迎交流,拜謝賜教~~~