2012-02-02 21 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