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

Iphone 在UIWebView中点击文本框时未显示键盘,iphone,uiwebview,uitextview,uikeyboard,Iphone,Uiwebview,Uitextview,Uikeyboard,我有一个UITabViewController,设置了两个选项卡,第二个选项卡包含一个web浏览器。键盘不会出现在我的应用程序中,除非我首先在第一个选项卡中显示并关闭UIAlertView。可能有什么问题?没有太多问题,但如果您的文本字段显示在视觉上,但在点击时不会触发键盘,则很可能是焦点问题,即包含文本字段的视图不认为应该拦截点击。这通常是因为另一个视图在包含文本字段的视图的前面(逻辑视图层次结构的下面)。据推测,显示然后解除警报会改变视图层次结构,并让textfield截取点击 这是我首先要

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

没有太多问题,但如果您的文本字段显示在视觉上,但在点击时不会触发键盘,则很可能是焦点问题,即包含文本字段的视图不认为应该拦截点击。这通常是因为另一个视图在包含文本字段的视图的前面(逻辑视图层次结构的下面)。据推测,显示然后解除警报会改变视图层次结构,并让textfield截取点击


这是我首先要检查的

已解决;我无意中删除了:

[window makeKeyAndVisible];

对我来说,问题是我使用了DCIntrospect(非常推荐)的第三方库,它有一个bug,阻止键盘出现在UIWebView中。一个问题尚未解决

这里提到的解决方案对我不起作用。我有一个持续的错误,这似乎是iOS的问题,或者至少是我的构建设置的问题。我想出了一个好主意。如果你还是像我一样,试试这个。我想它会起作用的。这里简单介绍一下。如果你需要更多细节,请查看我的帖子

将其放入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";
我发现[(window)makeKeyAndVisible]在这里起了作用

如果您试图使用makeKeyAndVisible,但它似乎没有任何作用,那么很可能您正在将该消息发送给空对象——这就是我遇到的情况。使用NSLog()检查要向其发送消息的窗口的标识


一旦我找到了正确的窗口对象,它就工作得很好。

该死的,我整个上午都在用头敲击键盘,就是这样,谢谢!!但是[myWebView.window makeKeyAndVisible];din不帮助我:(但是如何在情节提要上访问UIWebView窗口?我想你不知道哪个UIWindow与你的UIWebView关联…如果我误解了你,很抱歉。我会在我的回答中为你提供一个代码片段。我不测试它,但我确信它会工作。benlozano,谢谢你的回答!我已经尝试了
[myWebView.window makeKeyAndVisible]
但键盘没有出现:(实际上,myWebView.window可能与我提供的代码具有相同的效果…我甚至从未费心寻找窗口属性。请尝试我的代码并告诉我它是如何工作的。(显示我知道的内容。)我已经尝试了myWebView.window和您提供的代码-键盘没有出现:(webViewSuperview不是零。是否有任何硬方法调用键盘?