当用户在 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 中点击时,默认键盘如何出现?的主要内容,如果未能解决你的问题,请参考以下文章