【问题标题】:UIWebView doesn't show keyboard when focusing on text field on the second loadUIWebView 在第二次加载时关注文本字段时不显示键盘
【发布时间】:2012-03-09 14:28:19
【问题描述】:

我的 UIWebView 有一个非常奇怪的问题。

我正在使用它来让用户登录多个服务, 我打开 UIWebView,显示一个 HTML 登录页面,然后按其中一个文本字段打开键盘,正如它应该的那样。

之后,如果我尝试在其中加载不同的登录屏幕,由于某种原因,按下输入不会显示键盘。

你们中有人遇到过这个奇怪的错误吗?我尝试检查[self.window makeKeyAndVisible];,就像我看到一些推荐一样,但不幸的是它并没有解决问题:(

这就是我加载 UIWebView 的方式:

[webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
[webAuth loadRequest: [NSURLRequest requestWithURL:  [NSURL urlWithString:@"http://whatever"] ]];

第一行是清除页面(尝试删除它,它没有解决键盘问题)

【问题讨论】:

  • [self.view endEditing:YES];强制辞职第一响应者。这个我没测试,你可以试试
  • @NeverBe 谢谢,但不幸的是,这并不能回答我的问题,我需要了解为什么在第二次加载时,选择输入文本时 webview 没有响应......(键盘没有上来)
  • 我想过,但这听起来像是一个肮脏的解决方法......我现在就这样做。谢谢。
  • 我有同样的问题,键盘不显示,但似乎是 iOS 版本依赖。我测试了一个由 iOS 4.3 和 iOS 5.0 模拟器中的 UIWebView 加载的表单对话框,键盘按预期显示(点击输入字段时)。但是,当我在 iOS 5.1 模拟器(以及具有该版本的设备上)中测试它时,它不会出现。你有什么建议吗,在我的情况下可能是什么问题?谢谢
  • 我已经解决了!我添加了 [window makeKeyAndVisible];在应用程序中:didFinishLaunchingWithOptions: 方法(如本论坛中的此处所述)并且成功了!

标签: ios uiwebview keyboard nsurlrequest


【解决方案1】:

如果我错过了什么,我真的很抱歉,但我无法重现您的错误。您能否更详细地指定您的设置? (我宁愿将此帖子添加为评论,但还没有声誉,抱歉 -.- 请随时将此答案更改为评论)

我做什么:

  1. 我使用 iOS SDK 5.0 并在 iOS5.0 模拟器和带有 iOS5.0 的 iPhone4 上进行了尝试
  2. 我创建了一个简单的基于视图的应用程序,并将一个按钮和一个 webview 拖入到 nib 文件中
  3. 我调用viewDidLoad中的第一个网站,也就是Facebook登录

    - (void)viewDidLoad {
      [super viewDidLoad];
      [self.webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
      [self.webAuth loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://facebook.com"]]];
    }
    
  4. 我使用上述按钮调用第二个网站,Twitter 登录

    - (IBAction)showWebsite:(UIButton *)sender {
        [self.webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
        [self.webAuth loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://twitter.com/#!/login"]]];
    }
    
  5. 我登录 Facebook,然后按下按钮,然后点击任何 Twitter 登录输入字段

  6. 包括键盘在内的一切都按预期工作

【讨论】:

  • 在其他项目中执行此操作时,它可以工作,我仍然不确定我当前项目中的原因是什么。我会继续调查的。
【解决方案2】:

我写这个是为了以防其他人会遇到这个 -
导致问题的原因似乎是在网页加载时使用 SVProgressHUD 呈现加载器。我不确定如何,但是当我将它们注释掉时,一切都按预期工作。

更新:Sam 已修复 SVProgressHUD 组件,现在它在 viewDidLoad 上没有问题

【讨论】:

  • 我遇到了同样的问题。感谢您指出 SVProgressHUD!虽然我认为上一个版本解决了使用 GCD 的问题:github.com/samvermette/SVProgressHUD
  • 是的,Sam 几天前就修好了。
  • 您是否知道这个问题的实际原因是什么,或者是否有 SVProgresssHUD 中的提交修复了它?我遇到了类似的问题,当我在 UIWebView 上第二次调用 loadRequest 时,键盘不再显示。
  • 没关系...这是为我做的stackoverflow.com/questions/11869918/…
猜你喜欢
  • 2018-07-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2017-08-14
  • 2011-05-27
  • 2016-06-11
  • 2015-08-17
  • 2020-05-17
相关资源
最近更新 更多