Жест тройного нажатия не может быть активирован при программировании средства просмотра PDF для iOS [Swift, iOS 15]

#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!