在UIWebView中,如果我们使用了Input 这个element ,ios会自动弹出 键盘。但是不会自动关闭。
如果我们需要在 UIWebView 中的其他部分点击 来自动关闭这个 键盘。应该怎么处理?
方法如下:
- 首先截获 UIWebView的touch事件。
处理方法可以参考
http://blog.csdn.net/remote_roamer/article/details/7615428
- 在截获触发的事件中使用如下代码即可:
//点击后相应的方法 -(void)handleSingleTap:(UITapGestureRecognizer *)sender{ CGPoint point = [sender locationInView:self.view]; NSLog(@"handleSingleTap!pointx:%f,y:%f",point.x,point.y); //[self.webView becomeFirstResponder]; [self.webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur()"]; }
这个代码的含义是: 由Objective-C代码对UIWebView中的 html 内容发出一个 js指令, 这个指令是
让html中当前的控件失去焦点。这样就关闭了键盘.document.activeElement.blur()
- 所以在html文件中需要加入这个 javascript方法
document.ontouchmove = function(e) { e.preventDefault(); }
注意:这段代码会使得这个html内容在WebView中显示的时候,失去滚动条的功能。