Я хочу управлять клавиатурой, отображаемой при использовании WKWebView.
У меня есть следующий быстрый код, запускающий веб-просмотр:
let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
webView.navigationDelegate = self
Он загрузит HTML, который выглядит так:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="inputElement textFieldInput">
<input type="text" id="textField" value="" data-clear-btn="true"/>
</div>
</body>
</html>
Обычно клавиатура управляется параметром type в поле ввода. «num» для цифровой клавиатуры и «text» для буквенно-цифровой клавиатуры. Но я хочу иметь больше контроля.
Я провел достаточно исследований, чтобы понять, что этого нельзя сделать, используя опцию в текстовом поле. Я полностью ожидаю, что напишу изменить код, который открывает веб-просмотр.
Как мне изменить код swift, чтобы я мог это сделать?
В идеале я мог бы определить несколько клавиатур и позволить html-коду управлять ими примерно так: <input type='customkb1'> and <input type='customkb2'>
Моя немедленная необходимость - отключить кнопку «эмодзи» на клавиатуре, но я хотел бы получить общее решение, так как смогу реально улучшить удобство использования своего приложения, если смогу определить клавиатуру в соответствии с тем, что вводит пользователь.
Вот что мы нашли:
Вот хитрость, которую я знаю и использую для родной части приложения
https://stackoverflow.com/a/25861718/1885345
Но это не работает для webViews
Вот способ указать клавиатуру из WKWebView:
https://stackoverflow.com/a/28533488/1885345
Но у него нет возможности установить клавиатуру без смайликов.
Вот что я использую для отключения сторонних клавиатур:
https://stackoverflow.com/a/34863426/1885345