У меня есть UITextView, к которому я прикрепил распознаватель жестов следующим образом:
let testTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(textTextViewTapped(gestureRecognizer:)))
testTapGestureRecognizer.cancelsTouchesInView = false
testTapGestureRecognizer.delaysTouchesBegan = false
testTapGestureRecognizer.delaysTouchesEnded = false
if textTextView != nil {
textTextView!.addGestureRecognizer(testTapGestureRecognizer)
}
Упомянутый выше селектор выглядит следующим образом:
@objc func textTextViewTapped(gestureRecognizer: UIGestureRecognizer) {
print("testTextViewTapped called.")
}
Каждый раз, когда я нажимаю на UITextView, я вижу сообщение выше, напечатанное на консоли. Однако клавиатура больше не появляется.
Мне показалось, что документ Apple запутался:
Здесь , это говорит о том, что
Распознаватель жестов не участвует в ответчике представления
цепь.
, который я интерпретирую как любые жесты, которые также отправляются на представление и вверх по цепочке, как обычно.
Позже на той же странице написано,
Если распознаватель жестов распознает его жест, оставшиеся касания
для просмотра отменяются.
, что означает, что если подключенный распознаватель жестов способен понимать жест как тот, который он должен распознать, то он предотвратит его доставку в представление, к которому он прикреплен. Кроме того, он указывает 3 свойства, которые должны быть в состоянии остановить распознаватель жестов от этого. Я установил для всех трех из них значение false в моем коде, как показано выше.
Что на самом деле происходит здесь и как я могу позволить UITextView нормально интерпретировать прикосновения, а также иметь возможность использовать распознаватель жестов?