Вставьте эту строку перед добавлением shortPressGesture:
[shortPressGesture requireGestureRecognizerToFail:longPressGesture];
Примечание: shortGesture будет вызываться не сразу после 0,3 секунды удержания, а после отпускания крана, если он длился от 0,3 до 1,2 секунд. Если время нажатия превышает 1,2 с (в вашем коде 1,5 с, что, вероятно, является опечаткой), будет запущен только longPressGesture.
EDIT:
Однако, если вы хотите, чтобы ваши обработчики событий сработали (в случае длительного нажатия), вы должны сделать это:
Ваш UIView
из должен реализовать файл <UIGestureRecognizerDelegate>
в .h
.
В .m
файле вы добавляете этот метод:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
Теперь вместо добавления строки:
[shortPressGesture requireGestureRecognizerToFail:longPressGesture];
Вы добавляете эти две строки:
shortPressGesture.delegate = self;
longPressGesture.delegate = self;
ПРИМЕЧАНИЕ: если у вас есть какие-либо другие UIGestureRecognisers
, связанные с вашим UIVIew
, вам нужно будет добавить некоторую проверку в shouldRecognizeSimultaneouslyWithGestureRecognizer:
, в противном случае вы можете просто вернуть YES
.