2013-04-03 150 views
0

我使用resignFirstResponder隱藏數字鍵盤,但它只能在某些時候躲在鍵盤:我實現backgroundTap[textField resignFirstResponder];,並在後臺敲擊鍵盤確實隱藏了。我還在viewWillDisappear中加入了這一行,但它在某些時候有效。當用戶回到他來自的窗口時,鍵盤消失。但是當他走到一個新窗口(不是他來自的那個窗口)時,鍵盤不會消失。我使用isFirstResponder方法檢查了調試情況,並且在兩種情況下,文本字段確實不再是第一響應者(儘管在其中一種情況下鍵盤一直顯示,如上所述)。resignFirstResponder成功隱藏鍵盤只在某些情況下

viewWillDisappear的實施過程是這樣:

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    [textField resignFirstResponder]; 
    [self.view endEditing:YES]; 
} 

我想隱藏在viewWillDisappear兩種情況下的鍵盤,因爲新的窗口沒有文本字段中,是有關這個鍵盤。它有完全不同的元素。

推送另一個視圖的事件不是按鈕單擊,而是編輯文本字段的開始。在我看來,我有三個文本字段,其中只有一個顯示鍵盤。另外兩個推動另一種觀點。這是textFieldDidBeginEditing的代碼:

-(void)textFieldDidBeginEditing:(UITextField *)textField{ 
    if (textField1.editing == YES) 
    { 
     [self performSegueWithIdentifier:@"goToView1" sender:self]; 
    } 
    else if (textField2.editing == YES) 
    { 
     [self performSegueWithIdentifier:@"goToView2" sender:self]; 
    } 

} 

雖然生成鍵盤的文本字段是textField3。

有關如何使鍵盤在兩種情況下消失的一些想法?

+1

你想要什麼正好? – Bhavin

+0

我改變了問題的結尾,使其更加清晰。 – Tomer

+0

爲什麼要將keyborad隱藏在'viewWillDisappear'中? –

回答

0
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    if (textField == textField1) 
    { 
     [self.view endEditing:YES]; 
     //else you can try with this also. 
     [textField performSelector:@selector(resignFirstResponder) 
       withObject:nil 
       afterDelay:0]; 
     // 
     [self performSegueWithIdentifier:@"goToView1" sender:self]; 
     return NO; 
    } 
    else if (textField == textField2) 
    { 
     [self.view endEditing:YES]; 
     [self performSegueWithIdentifier:@"goToView2" sender:self]; 
     return NO; 
    } 
    return YES; 
} 
+0

謝謝,但沒有幫助。 – Tomer

+0

@Tomer:你的TextField是在主視圖還是在其他視圖中? – Bhavin

+0

推送另一個視圖的事件不是按鈕單擊,而是編輯文本字段的開始。在我看來,我有三個文本字段,其中只有一個顯示鍵盤。另外兩個推動另一種觀點。 – Tomer

0

使用此代碼檢查是否存在任何文本字段並使用它來關閉鍵盤。根據您的需求進行調整。

for (id elem in self.view.subviews) { 
    if ([elem isKindOfClass:[UITextField class]]) { 
     [(UITextField *)elem resignFirstResponder]; 
    } 
} 
+0

我在viewWillDisappear上添加了此代碼,但仍然顯示鍵盤。 – Tomer

+0

哪個組件打開鍵盤? – WhiteTiger

+0

我的方法意味着鍵盤是由文本字段打開的,所以如果您有其他組件(如textview),則還必須包含控件中的那些 – WhiteTiger

相關問題