我正在UIWebview上打开一个网页,这个页面有一个文本字段和一个虚拟键盘来输入密码。但是当编辑文本字段时,iPhone虚拟键盘也会出现。 我想解雇iPhone键盘并同时继续编辑文本字段。我尝试了以下但是没有用。
[webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur()"];
并且还尝试注册键盘通知,这样我就可以调低键盘但是没有成功。我很感激有关如何实现这一目标的任何想法。提前致谢。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector (keyboardDidShow:)
name: UIKeyboardDidShowNotification object:nil];
-(void) keyboardDidShow: (NSNotification *)notif
{
// I want to dismiss the keyboard
}
答案 0 :(得分:7)
答案 1 :(得分:2)
添加遍历所有webview子视图的方法并重新签名第一个响应者
-(BOOL)resignFirstResponderAction:(UIView *)view{
if (view.isFirstResponder){
[view resignFirstResponder];
return YES;
}
for (UIView *subView in view.subviews) {
if ([self resignFirstResponderAction:subView]){
return YES;
}
}
return NO;
}
然后只需使用webview调用此方法:
[self resignFirstResponderAction:webView];
修改强>
似乎有更简单的解决方案:
[webView endEditing:YES]
我留下原始答案,因为在某些情况下它可能会有所帮助
答案 2 :(得分:0)
点击后可以使用javascript将焦点从html元素中移开:
<input type="text" onClick="document.getElementById('myInput').blur();" id="myInput"/>
答案 3 :(得分:0)
您需要将下一类UIView添加到您的代码中,并将上述方法添加到您的实现中
在@implementation
@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.subviews) {
UIView *firstResponder = [subView findFirstResponder];
if (firstResponder != nil) {
return firstResponder;
}
}
return nil;
}
@end
-(void)hideWebViewFirstResponser{
UIView *firstResponderOwner=[webView findFirstResponder];
if(firstResponderOwner) {
[firstResponderOwner resignFirstResponder];
}
}