Как получить функциональность жеста Long Press в iOS ниже 3.2 - PullRequest
10 голосов
/ 30 декабря 2010

UILongPressGesture доступен в версии 3.2 и выше. Но я пытаюсь разработать приложение для максимальной совместимости и, следовательно, нацеливаясь на ios ver2.0

Может кто-нибудь подсказать, как выполнить жест длинного нажатия в ios v2.0

Ответы [ 2 ]

18 голосов
/ 30 декабря 2010

Для одного пальца это довольно просто: запустите таймер в методе touchesBegan и запустите действие, когда таймер сработает. Отмените таймер, если вы получите touchesEnded до его срабатывания. Вот реализация, которая использует метод performSelector:withObject:afterDelay:.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self performSelector:@selector(fireLongPress)
               withObject:nil
               afterDelay:LONG_PRESS_THRESHOLD];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
}

- (void)fireLongPress {
    // do what you want to do
}

Возможно, вы также захотите убить таймер, если палец переместится слишком далеко.

С мультитачем все немного сложнее. Вы должны будете отслеживать, какое касание есть, и решать, что делать, например. когда один палец нажал достаточно долго, а другой нет (или выяснить, что делает UILongPressGestureRecognizer).

1 голос
/ 30 декабря 2010

Реализуйте методы touches... на ваш взгляд.Если определенное время проходит между touchesBegan:withEvent: и touchesEnded:withEvent: без каких-либо событий touchesMoved:withEvent:, вы нажимаете долго.

...