2010-06-20 4 views
9

Я ищу, чтобы сократить задержку касания на UIScrollView, но я не хочу использовать setDelaysContentTouches: NO; Я все еще хочу, чтобы была небольшая задержка, но мои пользователи жалуются на то, что она слишком длинная.Сократить задержку касания в UIScrollView?

Есть ли способ сделать это?

ответ

3

Док говорит

Если пользователь перетаскивает палец достаточно далеко до того, как таймер истечет, вид прокрутки аннулирует отслеживания в подвид и выполняет сама прокрутка. Подклассы могут переопределять touchsShouldBegin: withEvent: inContentView :, pagingEnabled и touchsShouldCancelInContentView: методы (которые вызываются видом прокрутки ), чтобы повлиять на просмотр прокрутки с помощью прокрутки.

Так что я думаю, что нет простого способа сделать это. Вероятно, вам придется переопределить всю систему таймера в этих методах.

0

Я просто наткнулся на эту проблему, и это мое решение:

Подкласс UIScrolView

Добавить заместить эти методы:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 
{ 


    self.lastTimestamp = [NSDate date]; 

    return [super touchesShouldBegin:touches withEvent:event inContentView:view]; 
} 

- (BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
     NSDate *now = [NSDate date]; 


    if (-[self.lastTimestamp timeIntervalSinceDate:now] < _delay) 
     return YES; 

    return NO; 
} 
Смежные вопросы