2011-06-10 82 views
3

我有一个UITabViewController设置了两个选项卡,第二个选项卡包含一个Web浏览器。除非我在第一个标签中首先显示并解除UIAlertView,否则键盘不会出现在我的应用程序中。什么可能是错的?在UIWebView中点击文本框时不显示键盘

回答

10

已解决;我不小心删除:

[window makeKeyAndVisible]; 
+1

添加这个解决了我的问题:) – nilamo 2011-08-12 13:09:01

+0

该死的我一直在敲我的头对键盘整个上午,这是它,谢谢! – boliva 2011-11-16 19:29:28

+0

但是[myWebView.window makeKeyAndVisible]; din't帮助我:( – Dmitry 2012-08-08 16:48:56

2

不是很多,但如果你有可视化显示的文本字段,但它不会触发键盘时,最有可能你有焦点问题,即包含文本字段的视图不相信它应该拦截水龙头。这通常是因为另一个视图在视觉上位于包含文本字段的视图的前面(在逻辑视图层次结构的下面)。据推测,显示并解散警报会改变视图层次结构并让文本框截取水龙头。

这就是我会先检查的。

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

但如何访问故事板上的UIWebView的窗口? – Dmitry 2012-08-08 16:57:24

+0

我收集,你不知道哪个UIWindow与你的UIWebView关联...抱歉,如果我误解了你,我会在我的答案中给你提供一个代码片段,我没有测试它,但是我确定它会工作 – benlozano 2012-08-08 18:19:47

+0

benlozano,谢谢你的回答!我试过'[myWebView.window makeKeyAndVisible] '但键盘不出现:( – Dmitry 2012-08-08 18:30:25

0

我发现[ (窗口)makeKeyAndVisible]在这里做了诡计。

如果您正在尝试使用makeKeyAndVisible并且它看起来没有做任何事情,很可能您将该消息发送给空对象 - 这就是我遇到的情况。使用NSLog()来检查将要发送该消息的窗口的标识。

一旦我找到正确的窗口对象,它工作正常。