Проблема с жестом iOS - как обнаружить событие касания, которое продолжает касаться в течение определенного промежутка времени? - PullRequest
0 голосов
/ 15 мая 2011

Я совсем новичок в сенсорных событиях и жестах в iOS.

Мне нужно вызвать событие, когда пользователь продолжает касаться пальца в течение определенного промежутка времени, например 3 секунды Как следить за этим длинным событием?

Цените это, если вы могли бы дать мне код для справки?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

Возможно, вы захотите посмотреть, подходит ли UILongPressGestureRecognizer для интерфейса вашего приложения. В приведенной выше документации Apple есть пример кода. UIView предоставляет только четыре метода для переопределения. Вы можете сделать немного больше с распознавателями жестов. Вот пример кода для других распознавателей жестов. Надеюсь, это поможет.

2 голосов
/ 15 мая 2011

Вы можете сделать это следующим образом.

В вашем файле .h:

NSTimer *touchesHoldTimer;

И:

@property (nonatomic, retain) NSTimer *touchesHoldTimer;

- (void)touchesHoldCheckTime;

Не забудьте синтезировать и выпустить touchesHoldTimer

В вашем файле .m:

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

    NSLog(@"touchesBegan");

    if ([countTouches count] == 1) { // Not multitouch
        NSLog(@"Starting timer..");

        touchesHoldTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(touchesHoldCheckTime) userInfo:nil repeats:NO];
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesEnded");

    if (touchesHoldTimer != nil) {
        [touchesHoldTimer invalidate];
        touchesHoldTimer = nil;
    }
}

- (void)touchesHoldCheckTime {
    NSLog(@"You have hold me down for 3 sec.");

    [touchesHoldTimer invalidate];
    touchesHoldTimer = nil;
}
...