В моем приложении для iOS используется WKWebView
с contenteditable = true
для определенного div
. Я хотел бы иметь код, чтобы клавиатура отображалась в веб-представлении, чтобы пользователь мог просто начать печатать. Вещи, которые я пробовал, не имели никакого эффекта:
- Указание веб-представлению
becomeFirstResponder
(длинный кадр, потому что веб-представление не знает, что div
использовать).
- Внедрение JS, чтобы сообщить
div
focus()
. (Это работает в других браузерах, но, к сожалению, не в WKWebView
)
- Имитация сенсорных событий в JS с помощью
TouchEvent
и dispatchEvent()
в надежде создать впечатление, что пользователь нажал на div
.
В третьем случае я также использовал addEventListener()
, чтобы наблюдать за симулированными касаниями и сравнивать их с реальными событиями касания при нажатии на экран. Похоже, ключевое отличие состоит в том, что значение isTrusted
события является ложным для смоделированных касаний.
Я понимаю, что это потенциальная проблема безопасности, позволяющая приложениям имитировать сенсорные события, но у меня не было никаких других идей. Я пытаюсь заставить клавиатуру появляться, то, что вводит пользователь, не то, с чем я хочу связываться. В основном я хочу то же самое, что звонить becomeFirstResponder()
на UITextView
.
Это очень похоже на выпуск WebKit 142757 , но я не понял, как использовать предложенный обходной путь, связанный с этим.
Уточнение: Я могу настроить и использовать редактируемое веб-представление, но клавиатура не появляется, пока я не нажму на веб-представление. Я пытаюсь заставить клавиатуру появляться автоматически, не требуя нажатия, чтобы начать редактирование.