3

私のコード:

[self.scrollView.panGestureRecognizer addTarget:self action:@selector(handlePanForScrollView:)];

- (void)handlePanForScrollView:(UIPanGestureRecognizer *)gesture {
switch (gesture.state) {
    case UIGestureRecognizerStateBegan:
        startScrollPoint = [gesture locationInView:self.scrollView];
        break;
    case UIGestureRecognizerStateEnded: {
        NSLog(@"end");
    }
    default:
        ;
        break;
    }
}

開始状態は正常に動作します。しかし、スクロール中NSLogにすべての時間を表示endします(状態が変更される必要があるため)。ジェスチャ認識エンジンの終了状態を検出する正しい方法は何ですか?

4

2 に答える 2

1

UIScrollViewDelegateプロトコルの「通常の」メソッドを使用して実装することを検討しましたか?あなたがあなたの質問で言及されていない他のものを必要としないならば、それらはあなたの使用のために十分であるはずです:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    NSLog(@"scrolling now");
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    NSLog(@"stop scrolling");
}

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    NSLog(@"going to scroll");
}
于 2013-01-28T14:06:29.590 に答える
0

表示されたコードは、設計どおりに動作しています。あなたは起こらない何かを期待していると思います。

より正確には。GestureRecognizer は、ユーザーが画面上で行う物理的なジェスチャのみを認識します。したがって、小さなジェスチャーが繰り返され、開始状態と終了状態が繰り返し発生します。タッチしたままゆっくりと前後に動かしてジェスチャを行うと、ユーザーが手を離したときの 1 つの端だけが表示されます。

しかし、@meronix は、ジェスチャ レコグナイザーに期待しているのは、スクロールビューがスクロールを停止したときのように聞こえると言っています。これは、ユーザーのジェスチャが終了してから長い時間がかかる可能性があります。

于 2013-01-31T11:34:57.850 に答える