2012-04-02 63 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]; 
} 
相关问题