当用户在UIWebView中点击时,默认键盘如何弹出?

4

我目前正在开发一个类似于Mogok的自定义iOS浏览器。当用户在UIWebView中点击任何文本输入框时,我需要更改默认键盘。

我想知道系统是如何在用户点击UIWebView中的任何输入文本时显示键盘的?我该如何获取在UIWebView中成为第一响应者的文本字段的引用?


你想展示一个自定义键盘(inputView或inputAccessoryView),还是像@BlackRider建议的那样只是想要一个不同的系统键盘? - TomSwift
可以通过inputView或inputAccessoryView实现。@Tom - TechBee
2个回答

9

如果你无法打败他们,那就加入他们。

据我所知,并且我尝试过。如果不使用私有类(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
抱歉,我粘贴了一小部分代码,其中textview是我的webview子类的私有属性。让我把整个项目上传到github上。 - dcorbatta

-1

我需要从本地代码中完成,而不是从HTML部分。谢谢BlackRider。 - TechBee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接