在UIWebView中点击文本框时不显示键盘

时间:2011-06-10 22:27:06

标签: iphone uiwebview uitextview uikeyboard

我有一个UITabViewController设置有两个标签,第二个包含一个网络浏览器。键盘不会出现在我的应用程序中,除非我首先显示并关闭第一个选项卡中的UIAlertView。什么可能是错的?

5 个答案:

答案 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对象,它就可以正常工作。