2010-02-07 2 views

ответ

10

Создание NSTimer с +scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: в -touchesBegan:withEvent: методе вашей точки зрения, и отменить его (используя -invalidate) в -touchesEnded:withEvent:. Если метод, который указывает его селектор, вызывается, тогда пользователь провел пальцем по представлению в течение любой продолжительности, заданной для интервала таймера. Пример:

интерфейса (.h):

@interface MyView : UIView 
    ... 
    NSTimer *holdTimer; 
@end 

реализации (.m):

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt 
{ 
    [holdTimer invalidate]; 
    holdTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(touchWasHeld) userInfo:nil repeats:NO]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt 
{ 
    [holdTimer invalidate]; 
    holdTimer = nil; 
} 

- (void)touchWasHeld 
{ 
    holdTimer = nil; 
    // do your "held" behavior here 
} 
+1

Это то, что я в игре. Работает хорошо. –

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