2012-04-02 66 views
2

可能重複後消失:
How to make return key on iphone make keyboard disappear?如何使鍵盤點擊返回按鈕

我有我的工作頁面上兩個文本字段。單擊返回後,只有第一個文本字段會消失,但它不適用於第二個文本字段。

這裏是我的.m文件的方法:

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.cardNameTextField.delegate = self;  
    self.pinTextField.delegate = self; 
} 

-(BOOL) textFieldShouldReturn:(UITextField *)textField 
{  
    if (_cardNameTextField !=nil) 
    { 
     [self.cardNameTextField resignFirstResponder]; 
    } 
    else if (_pinTextField !=nil) 
    {  
     [self.pinTextField resignFirstResponder]; 
    } 
    return YES; 
} 

建議,請:)

+0

謝謝!檢查這一個。 – Hans 2012-04-02 09:01:52

+3

我已經丟失了多少次我在SO上看過這個問題的次數。不管它是什麼,'count ++;'! – tipycalFlow 2012-04-02 09:02:08

+0

@SimonWithington謝謝!它的工作現在:) – Hans 2012-04-02 09:07:45

回答

1

與您的代碼的問題是,你檢查,如果你的UITextField小號是nil或沒有,這不等於nil。所以無論什麼時候檢查條件,它總是進入第一個案例並返回(另一個在else中)。以下方案也將工作:

-(BOOL) textFieldShouldReturn:(UITextField *)textField 
{  
    [textField resignFirstResponder]; 
    return YES; 
} 

OR

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 
if (_cardNameTextField == textField) 
{ 
    [self.cardNameTextField resignFirstResponder]; 
} 
else if (_pinTextField == textField) 
{  
    [self.pinTextField resignFirstResponder]; 
} 
return YES; 
} 

OR

只需卸下else關鍵字在第二種情況下。

OR

Do it @Neelam Verma's way.

我會推薦這迫使第一響應,不檢查任何條件而辭職的第一個場景......

+0

+1爲正確的答案。 – 2012-04-02 18:07:35

+0

真棒:)謝謝! – Hans 2012-04-03 07:52:49

1

確保您已設置的文本字段的委託。

0

使用委託UITextFieldDelegate

而在你的實現類,你有兩個步驟:

  1. 設置委託

    self.textField.delegate =自我;

  2. 實現此方法

    - (BOOL)textFieldShouldReturn:(UITextField *)textField { 
        [textField resignFirstResponder]; 
        return YES; 
    } 
    
+0

謝謝! :)我已經做到了這一點,它的工作。 – Hans 2012-04-02 09:10:13

+0

@Hans,這太棒了! – 2012-04-02 09:15:11

5

替換上面的代碼本,並嘗試,如果有幫助:

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    if ([_cardNameTextField isEditing]) { 

    [self.pinTextField resignFirstResponder]; 
    } 

    if ([_pinTextField isEditing]) { 

    [self.cardNameTextField resignFirstResponder]; 

    } 

    return YES; 
    } 
0

當用戶點擊文本鍵盤上的完成按鈕,一個DID結束退出 事件將生成,並在那個時候,我們需要告訴文本字段放棄控制 ,以便鍵盤將消失。爲了做到這一點,我們需要在我們的控制器類中添加一個動作方法 。 怎麼樣:

在你的。 H:

- (IBAction)textFieldDoneEditing:(id)sender; 

在您的m:

- (IBAction)textFieldDoneEditing:(id)sender { 
[sender resignFirstResponder]; 
} 
0

這可能幫助你!

- (void) textFieldDidEndEditing:(UITextField *) textField 
{ 
    [textField2 resignFirstResponder]; 
} 
相關問題