UIPanGestureRecognizer に少し問題があります。ユーザーが左上にパンした場合 (負の x 方向と y 方向を意味します)、Recognizer は UIGestureRecognizerStateEnded 状態を報告しません。
ユーザーが指を離したときにいずれかの方向が正の場合、状態は UIGestureRecognizerStateEnded に変わりますが、両方の方向が負またはゼロの場合はアクションの報告を停止します。
ユーザーが何かをドラッグし、失敗した場合にそれらのビューが返されない限り、一部のオーバーレイビューを非表示にするため、これは悪いことです。
もちろん、しばらくしてからオーバーレイを自動的に表示するように NSTimer をセットアップすることもできますが、コードに明らかなエラーは見られず、きれいにしたいと思います。
私が逃したものはありますか?それはアップルのバグですか?
初期化は次のようになります。
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
}