2012-02-02 38 views
2

我在UIWebview上打开一个网页,这个页面有一个文本框和一个虚拟键盘来输入密码。但是当编辑textfield iPhone虚拟键盘时也会出现。 我想解雇iPhone键盘,同时继续编辑文本框。我尝试了以下,但它没有奏效。在UIWebview上编辑textfield时的Dimiss键盘

[webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur()"]; 

而且还试图注册键盘通知,所以我可以dimiss键盘,但没有成功。我将不胜感激关于如何实现这一目标的任何想法。提前致谢。

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector (keyboardDidShow:) 
               name: UIKeyboardDidShowNotification object:nil]; 



-(void) keyboardDidShow: (NSNotification *)notif 
{ 
// I want to dismiss the keyboard 
} 

回答

0

您可以使用JavaScript来把焦点从html元素离开时,它被点击这样的:

<input type="text" onClick="document.getElementById('myInput').blur();" id="myInput"/> 
0

您需要将UIView的下一个类别添加到你的代码
以上人员的实施办法 接下来的代码添加到您的.m文件,在@implementation之前去了所有的WebView子视图

@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]; 
    } 
} 
2

Add方法和辞职第一响应者

 -(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; 
    } 

然后就调用此方法与网页视图:

 [self resignFirstResponderAction:webView]; 

编辑

似乎还有更简单的解决方案:

[webView endEditing:YES] 

我离开了原来的答案,因为它可能在某些情况下

+0

波兰人帮助!你是男人! – 2012-02-14 13:14:38