Я обнаруживаю, нажал ли пользователь в течение 2 секунд:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
Вот как я справляюсь с долгим нажатием:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Текст «double oo» печатается дважды, когда я нажимаю более 2 секунд. Почему это? Как я могу исправить?
Чтобы проверить состояние UILongPressGestureRecognizer, просто добавьте оператор if в метод селектора:
источник
Вы должны проверить правильное состояние, так как для каждого состояния существуют разные варианты поведения. Скорее всего, вам понадобится
UIGestureRecognizerStateBegan
государство сUILongPressGestureRecognizer
....
источник
Просто попробуйте это:
Objective-C
Swift 2.2:
источник
Вот как с этим справиться в Swift:
источник
Swift 3.0:
источник
ваш обработчик жестов получает вызов для каждого состояния жеста. поэтому вам нужно поставить проверку для каждого состояния и перевести код в требуемое состояние.
Надо предпочесть использование switch-case вместо if-else:
источник