Как перехватить долгое нажатие на UITextView? - PullRequest
7 голосов
/ 08 октября 2010

Всего Objective-C / Cocoa Touch noob здесь, будьте осторожны.

Я пытаюсь перехватить, когда пользователь долго нажимает на UITextView (затем появляется увеличительное стекло с позиционером каретки), а затем отпускает прикосновение, т. Е. Когда обычно появляются параметры «Выбрать» и «Выбрать все», после увеличительное стекло Я хочу заменить это своим собственным настраиваемым действием, которое затем выполняется.

Возможно ли это?

Ответы [ 3 ]

14 голосов
/ 08 октября 2010

Вы можете попробовать что-то вроде этого:

Отключить встроенный распознаватель длинных нажатий

for (UIGestureRecognizer *recognizer in textView.gestureRecognizers) {
  if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){
    recognizer.enabled = NO;
  }
}

Затем добавить свой

UILongPressGestureRecognizer *myLongPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:<your target> action:@selector(<your custom handler>)]; 
[textView addGestureRecognizer:myLongPressRecognizer];
[myLongPressRecognizer release];
2 голосов
/ 13 февраля 2016

Быстрая версия кода @ Altealice для отключения встроенного распознавателя длинных нажатий:

if let actualRecognizers = self.sourcesTextView.gestureRecognizers {
    for recognizer in actualRecognizers {
        if recognizer.isKindOfClass(UILongPressGestureRecognizer) {
            recognizer.enabled = false
        }
    }
}

Это решение работает, но имейте в виду, что оно отключит взаимодействия textView, поэтому ссылки не будут выделены при нажатии и текст не будет доступен для выбора.

0 голосов
/ 10 марта 2016

если вы удалите [LongPressgesture setMinimumPressDuration:2.0];, это будет работать .. так как будет вызван жест табуляции, чтобы начать редактирование textField ... или просто реализовать эту функцию делегата жеста

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...