今天在做一個效果的時候,由於子視圖和父視圖都有響應的事件,子視圖的事件理所當然被父視圖攔截掉了,接下來就做分析解決
1. tableviewcell可以觸發點擊,同時tableview的父視圖有點擊識別,這樣點擊的時候就會產生沖突。解決方法在GestureRecgnizer代理方法裡面區分手勢。
#pragma mark tapGestureRecgnizerdelegate 解決手勢沖突
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UITableView class]]){
return NO;
} if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
} return YES;
}
2.一個橫向滾動的scrollview裡面加了一個豎向滾動的tableview,這時如果實現了scrollview的代理方法卻沒有區分scrollview和tableview,這時候tableview的滾動會發生混亂。解決方法是在didScroll代理方法裡區分這兩個。
#pragma mark - scrollView delegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if ([scrollView isKindOfClass:[UITableView class]]) {
// NSLog(@"------是列表---");
}
else {
// NSLog(@"------是滾動視圖----");
}
}