Контролировать поведение выбора текста в iOS Mobile Safari и/или UIWebView?
У меня есть длинный HTML-документ, содержащий несколько абзацев. Когда я пытаюсь выбрать текст в Mobile Safari на iOS или в UIWebView, произойдет следующее:
- Сначала я получаю точность на уровне персонажа по моему выбору.
![enter image description here]()
- Затем, когда я выбираю больше, точность падает до двух строк текста и в конечном итоге до целых абзацев. Невозможно закончить мой выбор текста именно там, где я хочу.
![enter image description here]()
Когда я устанавливаю свойство CSS contentEditable
в true
, я сохраняю точность символьного уровня, но клавиатура также появляется, что, конечно, я не хочу.
Есть ли способ сохранить точность выбора уровня символа независимо от того, как долго текст я выбираю?
Ответы
Ответ 1
iOS 8 WKWebView
может решить эту проблему. WKWebViewConfiguration
имеет свойство, называемое selectionGranularity
. Комментарий гласит:
Уровень детализации, с которым пользователь может интерактивно выбирать контента в веб-представлении. Возможные значения описаны в WKSelectionGranularity. Значение по умолчанию WKSelectionGranularityDynamic.
Одно из двух возможных значений: WKSelectionGranularityCharacter
. В комментарии говорится:
Конечные точки выбора могут быть размещены на любой границе символа.
Я еще не пробовал, но это звучит очень многообещающе!
Обновление 7/6/15. Похоже, это не так просто: Выбор текста в WKWebView: WKSelectionGranularityCharacter
Обновление 7/10/15. Когда вы внимательно изучаете приложение iOS Kindle, вы можете увидеть, что они повторно выполнили "собственный" выбор текста в JavaScript, потому что они не могли создать собственный текст выбор ведет себя так, как они хотели. Я почти уверен, что они, должно быть, пробовали все остальное, прежде чем они решили перепрофилировать его.
Ответ 2
Я встречаю ту же проблему,
Я решаю это по строке CSS:
display: inline-block;
Оба работают в Safari и WebView.
Ответ 3
Поскольку вы также выбираете заголовок текста, браузер распознает его как полный текст и выбирает весь абзац.
Кстати, нет способа помочь вам, не увидев исходный код HTML!
Ответ 4
Эй, вы можете использовать свойство CSS, не позволяя пользователю выбирать текст.
Вы можете использовать как:
html
{
user-select:none;
}