Программно отображать клавиатуру в UIWebView - PullRequest
1 голос
/ 20 марта 2012

Если элемент в UIWebView имеет свойство стиля -webkit-user-modify: read-write, то нажатие на элемент вызывает появление клавиатуры.Можно ли поднять клавиатуру программно?

Спасибо

Ответы [ 2 ]

6 голосов
/ 31 октября 2012

Похоже, в iOS6 теперь вы можете сделать это с помощью " keyboardDisplayRequiresUserAction ":

keyboardDisplayRequiresUserAction Логическое значение, указывающее, может ли веб-контент программно отображать клавиатуру.

@ свойство (неатомное) BOOL клавиатураDisplayRequiresUserAction обсуждение Когда для этого свойства установлено значение YES, пользователь должен явно коснуться элементов в веб-представлении, чтобы отобразить клавиатуру (или другой соответствующий вид ввода) для этого элемента. Если задано значение NO, событие фокуса на элементе автоматически отображает представление ввода и связывается с этим элементом.

Значением по умолчанию для этого свойства является ДА.

Доступность Доступный в iOS 6.0 и позже. Объявлен в UIWebView.h

ссылка:

3 голосов
/ 20 марта 2012

Из Библиотека разработчиков iOS :

Поскольку клавиатура отображается автоматически, когда вид становится первым респондентом, вам часто не нужно ничего делать, чтобы отобразить ее.Тем не менее, вы можете программно отобразить клавиатуру для редактируемого текстового представления, вызвав метод становления этого представления становиться верным.Вызов этого метода делает целевое представление первым респондентом и начинает процесс редактирования так же, как если бы пользователь нажал на представление.

Я сомневаюсь, что вызов [webView becomeFirstResponder] вызовет клавиатуру, покаэлемент HTML с требуемым стилем не имеет фокуса.Таким образом, ваша настоящая проблема может заключаться в том, чтобы программно установить фокус в вашем HTML-документе.Я бы попробовал сделать это через Javascript.Нечто подобное может работать:

NSString *jscode = @"document.getElementById('whatever').focus();";
[self.webView stringByEvaluatingJavaScriptFromString:jscode];
...