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