IOS: выделение текста в WKWebView (WKSelectionGranularityCharacter)

У меня есть приложение, которое использует веб-представление, где можно выделить текст. Давно раздражало, что вы не можете выделять текст за границей блока в UIWebView. WKWebView, кажется, исправляет это с помощью свойства в его конфигурации: selectionGranularity. Одним из возможных значений является WKSelectionGranularityCharacter:

Конечные точки выделения могут быть размещены на любой границе символа.

Звучит здорово! Именно то, что мне нужно. За исключением того, что когда я устанавливаю это в моем веб-представлении, я часто больше не могу выбирать текст вообще. Что здесь происходит? Есть ли что-то еще, что мне нужно установить? Кто-нибудь понял это?

Обновление: я обнаружил следующие ошибки:

  1. Если в приложении имеется более одного WKWebView с параметром selectionGranularity установлено значение WKSelectionGranularityCharacter, текст может быть выбран только самым последним из них для загрузки. Я подал это как ошибку 18441138.

  2. Если имеется обработчик щелчка, прикрепленный к элементу внутри body в HTML-содержимом WKWebView, для которого selectionGranularity присвоено значение WKSelectionGranularityCharacter, выделение текста внутри этого элемента не работает. Я подал это как ошибка 18440833.

  3. Выбор текста не выполняется в WKWebView после того, как вы вошли в режим редактирования в UITextView где-то еще в приложении, пока WKWebView не перезагрузится. Я подал это как ошибка 18468405.

Кто-нибудь работал с любым из них?

Ответ 1

Это несколько известных ошибок, которые до сих пор не исправлены.

Вы можете выполнить JavaScript, чтобы получить выделенный текст в качестве обходного пути.

window.getSelection().toString()

Docs