我有一个UITabViewController
设置有两个标签,第二个包含一个网络浏览器。键盘不会出现在我的应用程序中,除非我首先显示并关闭第一个选项卡中的UIAlertView
。什么可能是错的?
答案 0 :(得分:10)
解决;我不小心删除了:
[window makeKeyAndVisible];
答案 1 :(得分:3)
这里提到的解决方案对我不起作用。我有一个持续的错误似乎是iOS的问题,或者至少我的构建设置。我想出了a workaround。如果你仍像我一样陷入困境,试试吧。我认为它会起作用。这里简要介绍一下。如果您需要更多详细信息,请查看我的帖子。
将此放入您的网络视图的委托:
- (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";
答案 2 :(得分:2)
不是很多,但是如果你有视觉显示的文本字段,但是在点击时它不会唤起键盘,那么很可能你有焦点问题,即包含文本字段的视图不相信它应该拦截点击。这通常是因为另一个视图在视觉上位于包含文本字段的视图的前面(在逻辑视图层次结构的下方)。据推测,显示然后关闭警报会改变视图层次结构并让文本字段拦截点击。
这就是我先检查的内容。
答案 3 :(得分:0)
对我来说问题是我使用DCIntrospect的第三方库(非常推荐),它有一个错误阻止键盘出现在UIWebViews中。一个问题是开放https://github.com/domesticcatsoftware/DCIntrospect/issues/36
答案 4 :(得分:0)
我发现[(window)makeKeyAndVisible]在这里做了诀窍。
如果您尝试使用makeKeyAndVisible并且它似乎没有做任何事情,很可能您将该消息发送到空对象 - 这就是我遇到的。使用NSLog()检查要将该消息发送到的Window的标识。
一旦找到了正确的Window对象,它就可以正常工作。