2

スクロールを遅らせることはできUIScrollViewますか?すでに遅れていることは承知していますが、遅れの時間間隔を増やしたいと思います。handlePan:scrollViewをオーバーライドせずにそれを行う方法はありますpanGestureRecognizerか?

4

1 に答える 1

3

あなたはこれを試すことができます:

DelayGestureRecognizerクラスを作成する

#import <UIKit/UIGestureRecognizerSubclass.h>

@interface DelayGestureRecognizer : UIGestureRecognizer

@end

@implementation DelayGestureRecognizer

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesBegan:touches withEvent:event];

    double delayInSeconds = 1.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        self.state = UIGestureRecognizerStateFailed;
    });
}

@end

次に、あなたがあなたのを設定するときUIScrollView

DelayGestureRecognizer *delayGestureRecognizer = [DelayGestureRecognizer new];
[scrollView addGestureRecognizer:delayGestureRecognizer];
[scrollView.panGestureRecognizer requireGestureRecognizerToFail:delayGestureRecognizer];

(あなたは考えを理解します...実際には、ジェスチャーレコグナイザーが1秒以内に複数回呼び出された場合に備えて、タイマーを使用し、 UIGestureRecognizer'sメソッドでタイマーを無効にする方がおそらく良いでしょう...)- reset

于 2013-03-19T16:50:27.513 に答える