私は、uiscrollviewに添付された3つのジェスチャー認識機能を削除しようとしています。ジェスチャー認識機能を完全に削除する方法
私が記載されている3を取得し、それらが
NSArray * activeScrollViewGRecs = [theScrollView gestureRecognizers];
NSLog (@"activeScrollViewGRecs count: %d",[activeScrollViewGRecs count]);
を使用して一覧表示します。
その後、私はそれらを削除します。
for (UIGestureRecognizer *recognizer in activeScrollViewGRecs)
{
NSLog (@"recognizer: %@",recognizer.description);
recognizer.enabled = NO;
[theScrollView removeGestureRecognizer:recognizer];
}
その後、私はそれらを再度リストアップし、ゼロカウントを取得します。彼らは消されていなければなりませんか? なぜ、ビューは同じタッチ/スワイプに応答し続けます(そしてジェスチャーメソッドが呼び出される)。彼らが良い状態になる前に起こる必要がある「フラッシング」メカニズムがありますか?
これは、それらが作成されます方法です:
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handle1:)];
tapGesture.cancelsTouchesInView = NO; tapGesture.delaysTouchesEnded = NO;
tapGesture.numberOfTouchesRequired = 2; tapGesture.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tapGesture]; [tapGesture release];
swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handle2:)];
swipeGesture.cancelsTouchesInView = NO; swipeGesture.delaysTouchesEnded = NO; swipeGesture.delegate = self;
swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeGesture]; [swipeGesture release];
おかげであなたはどんなジェスチャーを停止するには、以下のジェスチャーのデリゲートを使用していないのはなぜ
ジェスチャを削除したにもかかわらずそれらが実際に起動されているかどうかを確認するために、ジェスチャメソッドにブレークポイントを設定しましたか? – Jeremy
まあ、それに応答するメソッドはまだ呼び出されます。つまり、 - (void)handleTouchesOne:(UITapGestureRecognizer *)recognizer)...これは画面上でまだ起こっています。 – TrekOnTV2017
興味深い。私は何とかジェスチャーが漏れた場合にこれが起こるのを見ました。 – Jeremy