Отключить параметры по умолчанию в UIMenuController для WKWebView - PullRequest
0 голосов
/ 06 августа 2020

Я разрабатываю приложение с настраиваемым подклассом WKWebView, и я пытаюсь отключить параметры по умолчанию, когда пользователь выбирает некоторый текст внутри веб-просмотра, и реализую мои собственные параметры. Однако кажется, что есть 4 варианта, которые нельзя удалить и они всегда будут отображаться: «Выбрать здесь», «Найти», «Узнать ...» и «Поделиться» ...

Предыдущий ответ утверждает это возможно, переопределив canPerformAction() или изменив canPerformAction в WKContentView, но я пробовал оба, и это не сработало. В частности, для четырех вариантов нет доступных селекторов UIResponder, хотя они появляются, когда я распечатываю список всех действий, входящих в canPerformAction.

Другой ответ утверждал, что это могло быть можно отключить параметры по умолчанию, если canPerformAction() возвращает false из First Responder, за исключением того, что WKWebView отказывается стать первым респондентом, вызывая becomeFirstResponder при выборе текста, и принудительно делает это, вызывая resign в WKContentView, кажется, отключает взаимодействия с WebView в целом. Также попробовал swizzling canPerformAction на дочернем WKContentView, но, похоже, это не имеет никакого значения.

Я могу только предположить, что параметры по умолчанию обрабатываются дальше по цепочке, но когда я разрываю цепочку, устанавливая следующий UIResponder на nil, canPerformAction больше не вызывается, и меню больше не отображается.

Я здесь в затруднении, как я могу просто показать индивидуальное меню при выборе текста?

Тестирование включено XCode 11.6 iOS 13,6

...