Как отследить длительное удержание пальца в iPhone? - PullRequest
4 голосов
/ 07 февраля 2010

Как я могу отслеживать такие события, как касание экрана iPhone в течение 2 секунд. Как в Safari, чтобы сохранить изображение для изображения, добавленного в UIWebView?

1 Ответ

10 голосов
/ 07 февраля 2010

Создайте 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
}
...