UICollectionViewCell サブクラスに UIPanGestureRecognizer を作成しました。画面の上部を除くすべてのセルで機能します。ステータス バーの高さについては、パン ジェスチャ レコグナイザが機能しなくなります。発火しません。私のテスト アプリには UICollectionView しかありません。ステータスバーはありません。おそらく、通知センターの「アクティブエッジ」がタッチイベントを盗んでいることに関係していると思います。
_panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];
_panGestureRecognizer.delegate = self;
_panGestureRecognizer.maximumNumberOfTouches = 1;
[self addGestureRecognizer:_panGestureRecognizer];
セルをパンすると、画面の上部に、パンの開始時にメッセージが表示されません。指を離すまでコールバックは呼び出されません。次に、コールバックは BEGAN を受け取り、その直後に ENDED を受け取ります。
- (void)panGestureRecognized:(UIPanGestureRecognizer*)sender {
NSLog(@"pan detected"); // for first cell, only called when finger is lifted up.
if (sender.state == UIGestureRecognizerStateBegan) {
NSLog(@"BEGAN");
} else if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"ENDED");
}
}
セルはジェスチャ レコグナイザーのデリゲートです。以下を実装します。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
セルは UIView メソッドも上書きします。
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
return YES;
}
これは、画面上部のパン ジェスチャ レコグナイザに関する既知の問題ですか? 回避策はありますか?