我有一个UITabViewController
设置了两个选项卡,第二个选项卡包含一个Web浏览器。除非我在第一个标签中首先显示并解除UIAlertView
,否则键盘不会出现在我的应用程序中。什么可能是错的?在UIWebView中点击文本框时不显示键盘
3
A
回答
10
已解决;我不小心删除:
[window makeKeyAndVisible];
2
不是很多,但如果你有可视化显示的文本字段,但它不会触发键盘时,最有可能你有焦点问题,即包含文本字段的视图不相信它应该拦截水龙头。这通常是因为另一个视图在视觉上位于包含文本字段的视图的前面(在逻辑视图层次结构的下面)。据推测,显示并解散警报会改变视图层次结构并让文本框截取水龙头。
这就是我会先检查的。
0
对我来说,问题是一个第三方的lib我用DCIntrospect(非常推荐),它从出现在UIWebViews中的键盘防止错误。一个问题是开放的https://github.com/domesticcatsoftware/DCIntrospect/issues/36
3
这里提到的解决方案并不适合我。我有一个持续的错误,似乎是iOS的问题,或者至少是我的编译设置。我想出了a workaround。如果你仍然像我一样卡住,试试这个。我认为它会起作用。这是简单的。看看我的帖子,如果你需要更多的细节。
要把它放到你的web视图的委托:
- (BOOL)webView:(UIWebView *)v shouldStartLoadWithRequest:(NSURLRequest *)r navigationType:(UIWebViewNavigationType)t {
NSString *requestString = [[r URL] absoluteString];
if ([requestString hasPrefix: @"yourURLPrefix:"]) {
if ([requestString hasPrefix: @"yourURLPrefix:keyboardFix"]) {
[v.window makeKeyAndVisible];
}
}
将这个变成你需要可靠的调出键盘输入任何元素的onfocus事件处理程序:
document.location = "yourURLPrefix:keyboardFix";
0
我发现[ (窗口)makeKeyAndVisible]在这里做了诡计。
如果您正在尝试使用makeKeyAndVisible并且它看起来没有做任何事情,很可能您将该消息发送给空对象 - 这就是我遇到的情况。使用NSLog()来检查将要发送该消息的窗口的标识。
一旦我找到正确的窗口对象,它工作正常。
添加这个解决了我的问题:) – nilamo 2011-08-12 13:09:01
该死的我一直在敲我的头对键盘整个上午,这是它,谢谢! – boliva 2011-11-16 19:29:28
但是[myWebView.window makeKeyAndVisible]; din't帮助我:( – Dmitry 2012-08-08 16:48:56