我目前正在开发一个自定义的 iOS 浏览器,比如 Mogok。当用户点击 UIWebView 中的任何文本输入时,我需要更改默认键盘。
我想知道当用户点击 UIWebView 中的任何输入文本时系统如何显示键盘?如何获取在 UIWebView 中成为第一响应者的文本字段的引用?
好吧,如果你不能打败他们,那就加入他们。
据我所知,我试过了。如果不使用私有类 (UIWebBrowserView),则无法更改 inputView 或 inputAccessoryView。
但是您可以通过通知 UIKeyboardWillShowNotification 来检测键盘何时出现。那么,中间的男人怎么样?我的意思是,使用 UITextField 之类的 buffer。
让我再解释一下。
当键盘出现时,你可以检查第一响应者是否是UIWebView,如果是,你可以成为一个textview作为第一响应者。
你赢了什么呢?用键盘输入的文本转到文本视图。你会说,那是没用的。当然,但是如何改变 textview 的输入视图呢?如何?有了这个https://github.com/kulpreetchilana/Custom-iOS-Keyboards
当用户在 Web 视图中书写时,您有一个自定义键盘!!!
你怎么能把textview的文本放在webview中?很简单,使用 textViewDidChange 和 javascript 将 textview 的文本放入内部 html 的输入中。
- (void)textViewDidChange:(UITextView *)textView{
NSString* script = [NSString stringWithFormat:@"document.activeElement.value = '%@';", textView.text];
[self stringByEvaluatingJavaScriptFromString:script];
}
我把这个想法的主要短语加粗。但是,也许我的解释很难理解。或者我的英语不好,所以我上传了一个带有这个想法的示例项目。
您可以通过更改 HTML 中的 type 属性来控制文本字段出现的键盘,例如<input type='email'/>
以下是可能的类型列表:http: //www.whatwg.org/specs/web-apps/current-work/#attr-input-type