UITapGestureRecognizer에 약간의 문제가 있습니다.왜이 UITapGestureRecognizer는 탭을 인식하지 못합니까?
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return YES;
}
나는 비슷한 문제 및 수 '를 가진 사람들의 수많은 스레드를 통해 검토 한 : 나는 이런 식으로 만들 : 나는 또한 포함 헤더 파일에서
self.userInteractionEnabled = YES;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
tapRecognizer.delaysTouchesBegan = YES;
tapRecognizer.delegate = self;
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.numberOfTouchesRequired = 1;
[self addGestureRecognizer:tapRecognizer];
을 그래서 같은 shouldReceiveTouch:
메소드를 구현 해결책을 찾는 것처럼 보입니다. 나는보기는 제스처 인식기를 추가하는 경우 것이 가능 탭 인식을 방해 할 수있는 YES로 userInteractionEnabled
세트 파단을 가지고 있다고 들었습니다, 그래서도 포함이 :
for(UIView *subview in self.subviews) {
subview.userInteractionEnabled = NO;
}
사람은 왜 제스처를 알고 인식기가 작동하지 않습니까?
편집 :
는 여기에 몇 가지 세부 사항은 다음과 같습니다
- 나는 UIView 하위에 UITapGestureRecognizer을 추가 해요.
- '
initWithFrame:
하위 클래스의 제스처 인식기를 추가합니다. - 제스처 인식기가 실제로 추가 된 코드 부분을 밟아 추가되는 것을 확인했습니다.
- 이보기가 포함 된보기 컨트롤러에는 연결된 제스처 인식기가 없지만
touchesBegan
,touchesMoved
및touchesEnded
을 구현합니다. 그러나이 question에 따르면 뷰 컨트롤러는 뷰의 제스처 인식에 영향을 미치지 않아야한다고 구현합니다.
편집 2 : 나는 수신 접촉에서 제스처 인식기와보기를 차단하는 다른 뷰가 없음을 확인한
. 또한 뷰가 실제로 포함 된 뷰 컨트롤러의 뷰에 추가되는지 확인했습니다. 그것은 문제가 다른 곳에있는 것처럼 보입니다.
이보기의 상위 개체 중 하나에 제스처 인식기가 연결되어 있습니까? –
@BrianShamblen - 뷰가있는보기 컨트롤러에는 제스처 인식기가 연결되어 있지 않지만'touchesBegan :','touchesMoved :'및'touchesEnded :'가 구현됩니다. – pasawaya
보기의 배경색을 빨간색으로 설정할 수 있습니까?빨간색보기를 잘 볼 수 있다면 계층 구조 안의 모든보기의 배경색을 설정 한 다음보기가 겹쳐 졌는지 알 수 있습니다. – vodkhang