在第二次加载时关注文本字段时,UIWebView不显示键盘

时间:2012-02-18 11:59:43

标签: ios uiwebview keyboard nsurlrequest

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

我用它来登录用户几个服务, 我打开UIWebView,显示一个HTML登录页面,按下其中一个文本字段就可以打开键盘。

enter image description here

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

enter image description here

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

这是我加载UIWebView的方式:

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

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

2 个答案:

答案 0 :(得分:2)

如果我错过了什么,我真的很抱歉,但我无法重现你的错误。您可以更详细地指定您的设置吗? (我宁愿把这篇文章添加为评论,但还没有它的声誉,对不起 - .-请随时将此答案更改为评论)

我的所作所为:

  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. 包括键盘在内的所有内容都按预期工作

答案 1 :(得分:1)

我写这篇文章以防万一其他人会碰到这个 -
似乎导致问题的原因是在网页加载时使用SVProgressHUD呈现加载器。我不确定如何,但当我评论它们时,一切都按预期工作。

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