UIPanGestureRecognizer에 약간의 문제가 있습니다. 사용자가 왼쪽으로 패닝하는 경우 인식기가 UIGestureRecognizerStateEnded 상태를보고하지UIPanGestureRecognizer가 사용자가 x 및 y를 음수 방향으로 패닝하면 "종료"또는 "취소"로 전환하지 않습니다.
사용자가 자신의 손가락을 리프트 할 때 원하는 방향 양수이면 UIGestureRecognizerStateEnded로 상태 변경하지만 (마이너스 x 및 y 지시 수단) 두 방향 모두 음수 또는 0 인 경우에만 작업을보고하는 것을 중지합니다.
사용자가 주위를 끌면 그 오버레이보기를 숨기고 그보기가 실패로 돌아 가지 않는 것이므로 이것은 나쁘다.
물론 시간이 지나면 자동으로 오버레이를 표시하도록 NSTimer를 설정할 수 있지만 내 코드에는 명백한 오류가 나타나지 않으며 깨끗하게 처리하고 싶습니다.
내가 놓친 것이 있습니까? Apple Bug입니까?
초기화이 같다 :
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
취급 기능은 다음과 같다 :
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
제스처 인식기를 실수로 제거하거나 다른보기로 옮겼던 과거에는 이런 일이있었습니다. 당신이하는대로 곧 침묵 할 것입니다. 귀하의 경우에는 그렇지 않습니다. – Kalle
정확히 무슨 일이 벌어지는 지 모르지만 가능한 모든 UIGestureRecognizerStates를 고려하여 상태 변경을 기록하여 상호 작용하는 동안 일어나는 일을 확인하십시오. –
나에게도 일어났습니다. 'uiview.addGestureRecognizer'를 VC의'viewDidLayoutSubviews'에서'viewWillAppear'로 옮겨 가면서 여전히 정당성을 찾고 있습니다. – Jokester