Я хочу использовать пользовательскую клавиатуру для UIWebView. Пользовательская клавиатура должна быть полностью HTML/JS/CSS для использования на нескольких устройствах. По этой причине я добавил уведомление, подобное приведенному ниже:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil];
Чтобы не допустить появления естественной клавиатуры, я добавил следующий метод при вызове уведомления.
- (void)keyboardWillShow
{
[self.webViews endEditing:YES];
}
В HTML файле у меня есть:
<!DOCTYPE>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>keyboard</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<div id="container">
<textarea id="write"></textarea>
</div>
</body>
</html>
Проблема в том, что когда я запускаю этот HTML файл в UIWebView и у меня есть longpress на textarea, или дважды нажмите, он сбой приложения. Если я удалю [self.webViews endEditing:YES];
Это не приведет к сбою приложения, но оно вызывает клавиатуру.
Я подозревал, что вы должны "копировать/вставлять/выбирать/выбирать все" в UIWebView, когда пользователь дважды нажимает или долго нажимает на textarea. Я попытался отключить их, но это не сработало. Любая идея была бы оценена.
Это Apple Bug # 15535639, надеюсь, они исправит это в ближайшее время.
Попробуйте это обходное решение, это сработало для меня.
- (void)keyboardWillShow
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.webViews endEditing:YES];
});
}
Для настройки клавиатуры необходим другой подход.
Здесь есть хорошее объяснение, в том числе некоторые примеры кода: настройка клавиатуры iOS
Там еще одна тема здесь, на SO с некоторыми обсуждениями и ссылками на тему: Как создать пользовательскую клавиатуру