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

Posted

技术标签:

【中文标题】当用户在 UIWebView 中点击时,默认键盘如何出现?【英文标题】:How the default keyboard comes up when user taps in UIWebView? 【发布时间】:2013-11-26 12:03:10 【问题描述】:

我目前正在开发像 Mogok 这样的自定义 ios 浏览器。当用户点击 UIWebView 中的任何文本输入时,我需要更改默认键盘。

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

【问题讨论】:

您是想显示自定义键盘(inputView 或 inputAccessoryView),还是只想像@BlackRider 建议的那样使用不同的系统键盘? 是通过 inputView 或 inputAccessoryView @Tom 【参考方案1】:

好吧,如果你不能打败他们,那就加入他们。

据我所知,我试过了。如果不使用私有类 (UIWebBrowserView),则无法更改 inputView 或 inputAccessoryView。

但您可以检测键盘何时出现,通知 UIKeyboardWillShowNotification。那么,做个中间人怎么样? 我的意思是,像缓冲区一样使用 UITextField

让我再解释一下。

当键盘出现时,你可以检查第一响应者是否是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];

我把这个想法的主要短语加粗。 但是,也许我的解释很难理解。或者我的英语不好,所以我上传了一个示例project 。

【讨论】:

代码是否来自UIWebView 的子类或类别?因为如果不是,你为什么要打电话给自己?应该是[self.webViewInstance stringByEva...[webViewInstance stringByEva... 请您提供更多代码来解释您的代码。 对不起,我粘贴了一部分代码,其中 textview 是我的 webview 子类的私有属性。让我把整个项目上传到github。【参考方案2】:

您可以通过更改 html 中的 type 属性来控制为文本字段显示哪个键盘,例如<input type='email'/>

以下是可能的类型列表:http://www.whatwg.org/specs/web-apps/current-work/#attr-input-type

【讨论】:

我需要从本机而不是 HTML 部分进行。谢谢黑骑士

以上是关于当用户在 UIWebView 中点击时,默认键盘如何出现?的主要内容,如果未能解决你的问题,请参考以下文章

调整键盘大小时的 UIWebView 问题

键盘启动时手指可滚动的 UIWebView

UIWebView 被键盘隐藏

键盘出现后 UIWebView 自动上移

UIWebview 本地化

添加一个新的 CheckBox 和一个 editText 视图,当用户在 android 的键盘上点击 Done 时?