2013-03-19 4 views
1

Можно ли отложить прокрутку в UIScrollView? Я знаю, что он уже задерживается, но я хотел бы увеличить временной интервал задержки. Есть ли способ сделать это без переопределения handlePan: scrollView's panGestureRecognizer?Задержка прокрутки в scrollView

+0

Не могли бы вы немного объяснить, что вы думаете о «прокрутке прокрутки»? Вы хотите запустить прокрутку UIScrollView после задержки? –

+0

@ Vincent Saluzzo да, точно. Например, я хочу перенести палец без обратной связи в течение 1 секунды, и только после этого, чтобы начать прокрутку. – Anastasia

ответ

2

Вы можете попробовать это:

Создать 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]; 

(Вы получаете идею ... на самом деле, вероятно, было бы лучше использовать таймер и сделать недействительным таймер в методе UIGestureRecognizer- reset, в случае, если распознаватель жеста вызываемые более одного раза менее чем за секунду ...)

+0

Прохладный идея. Но состояние readonly-property, есть ли способ установить его в UIGestureRecognizerStateFailed как-нибудь еще? – Anastasia

+0

О, извините, он работает с #import Anastasia

Смежные вопросы