0

그래서 이미지에 UITapGestureRecognizer가있는 뷰가 있으며 뷰가 있습니다. 문제는 테이블 뷰 셀을 탭하면 그 위에 탭 제스처 인식기가있는 뷰가 있기 때문에 해당 UITapGestureRecognizer의 동작도 실행된다는 것입니다. 질문 : 테이블보기 didSelectRowAtIndexPath가 실행될 때 탭 제스처 인식기 작업이 수행되지 않도록이 기능을 어떻게 비활성화합니까? 내가 설정 한 방법에 의해 :UITableView didSelectRowAtIndexPath 및 UITapGestureRecognizer 충돌이 발생했습니다.

tapGestureRecognizer.cancelsTouchesInView = NO; 

또한 일을 시도했다 :

- (IBAction) handleTapGesture:(UITapGestureRecognizer *) sender { 

    if ([sender.view isKindOfClass:[TileViewController class]]){ 
     NSLog(@"CANCEL THIS"); 
    } 

    if ([sender.view isKindOfClass:[UITableView class]]){ 
     NSLog(@"CANCEL THIS"); 
    } 
} 

을하지만

답변

1

전체보기 나 테이블 뷰가 아닌 이미지에 탭 제스처 인식기를 추가했는지 확인하십시오.

[myImage addGestureRecognizer:tapGestureRecognizer]; 
0

가에

yourView.userInteractionEnabled = NO; 

을 설정하면 문에 가본 적이 테이블 셀에 넣고있는 모습. 그것은 모든 어린이보기에 대한 접촉을 취소해야합니다. cellForRowAtIndexPath 함수에서 쉽게 설정할 수 있습니다.

+0

, 난 didSelectRowAtIndexPath가 실행하려는하지만 tapGestureRecognizer – aherlambang

+0

아닌 동작은, 셀에 설정하면 셀에 추가하는 하위 뷰에 설정하지 마십시오 . –

+0

나는 .. 기본적으로 UITableView 셀의 하위 클래스가 있고 하위 뷰에 추가 한 후 userInteractionEnabled = NO를 설정했습니다. – aherlambang

2

또한 gestureRecognizer:shouldReceiveTouch:을 구현하고 수행 할 작업을 결정하기 위해 뷰의 클래스를 사용하여이 작업을 관리 할 수 ​​있습니다. 이 방법은 테이블을 직접 둘러싼 영역의 탭을 마스킹하지 않는 이점이 있습니다 (이 영역의 뷰는 여전히 UITableView 인스턴스에서 비롯되지만 셀을 나타내지는 않습니다).

경고 : Apple이 클래스 이름을 변경하지 않을 것이라는 가정이 있습니다.하지 내가 원하는 무엇

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return ![NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]; 
}