Как получить функциональность жестов Long Press в iOS ниже 3.2

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

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

Ответ 1

Для одного пальца это довольно просто: запустите таймер в методе touchhesBegan и активируйте действие при срабатывании таймера. Отмените таймер, если вы получите касание "Eneded" перед тем, как он выстрелил. Здесь реализована реализация, использующая метод performSelector... 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).

Ответ 2

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