iOS5网页视图(UIWebView)中的输入框不能弹出键盘的问题

项目开发时,发现有时候在网页视图中的输入框获得焦点后,却不能弹出键盘。而且全部都是在iOS5的系统中出现了这个问题,iOS6中运行完全是正常的,而且即使是在iOS5中,其他的UITextView和UITextField仍然可以正常地弹出键盘。我仔细了看了一下代码,发现对UIWebView的一些操作和键盘弹出并没有什么关系。我看了一些UIWebView的一些资料,然后发现了这个问题:UIWebView要能弹出键盘,那么它所在的window必须是key window。

什么是key window?

key window就是接收键盘消息的window。键盘消息都会发送到key window上。而这个key window往往是系统自动设置的,但web view获得焦点并没有自动设置(也许是Apple开发偷了个懒),然而我们也可以用一个方法手动设置。

1
[window makeKeyAndVisiable]
一个演示例子

为了验证这个问题我也写了一段简短的代码:

1
2
3
4
5
6
UIWebView *webView = [[UIWebView alloc] initWithFrame: self .window.bounds];
[webView loadRequest:[ NSURLRequest requestWithURL:[ NSURL URLWithString: @"http://www.google.com" ]]];
[ self .window addSubview:webView];
     
UIWindow *anotherWindow = [UIWindow new ];
[anotherWindow makeKeyAndVisible];

这段代码在iOS5中运行的话,即使输入框获得了焦点也不能弹出键盘。
WebView输入框不能弹出键盘

解决方案

如果在UIWebView被添加的window上时,将window设置为key window就好了。

1
2
[ self .window makeKeyAndVisiable]
[ self .window addSubview:webView];
小结

UIWebView要能弹出键盘,那么它所在的window必须是key window。如果你的App可能存在多个Window(如弹出自定义的Alert,状态条等),而且这些window有可能被设置为key window,一定要在web view显示时将它所在的window设置为key window。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值