#ios #swift #gesture #pdfview
Вопрос:
Я пытаюсь создать средство просмотра PDF, в котором пользователи могут трижды нажать, чтобы выбрать слово.
Я хотел бы, чтобы это не противоречило жесту двойного нажатия PDFViewer
, чтобы пользователи могли дважды нажать на автозум.
Однако я не могу активировать тройное нажатие, используя следующий код.
let tapgesture = UITapGestureRecognizer(target: self, action: #selector(tapGesture(_:)))
tapgesture.numberOfTapsRequired = 3
pdfView.addGestureRecognizer(tapgesture)
По какой-то причине при указании можно активировать двойное нажатие tapgesture.numberOfTapsRequired = 2
. Однако это мешает жесту двойного нажатия, и я не могу использовать функцию автозвука.
Ответ №1:
Вы можете решить эту проблему, реализовав метод делегирования shouldBeRequiredToFailBy:
extension ViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(
_ gestureRecognizer: UIGestureRecognizer,
shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer
) -> Bool {
if let tapGestureRecognizer = otherGestureRecognizer as? UITapGestureRecognizer,
tapGestureRecognizer.numberOfTapsRequired == 2
{
return true
}
return false
}
}
И установите делегат в свой распознаватель жестов:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapGesture))
tapGesture.numberOfTapsRequired = 3
tapGesture.delegate = self
Комментарии:
1. Работает как заклинание! Большое вам спасибо, @Philipdukhov!