Как получить функциональность долгого пресс -жеста в iOS ниже 3.2

StackOverflow https://stackoverflow.com/questions/4565889

  •  14-10-2019
  •  | 
  •  

Вопрос

Uilongpressgesture доступен в iOS VER 3.2 и позже. Но я пытаюсь разработать приложение для максимальной совместимости и, следовательно, нацеливание на iOS Ver2.0

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

Это было полезно?

Решение

Для одного пальца это довольно просто: запустите таймер в 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
}

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top