单击返回按钮后如何使键盘消失

时间:2012-04-02 08:52:45

标签: iphone objective-c ios5 xcode4

  

可能重复:
  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;
}

建议请:)

6 个答案:

答案 0 :(得分:5)

将上述代码替换为此代码并尝试它是否有帮助:

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

    if ([_cardNameTextField isEditing]) {

    [self.pinTextField resignFirstResponder];
    }

     if ([_pinTextField isEditing]) {

    [self.cardNameTextField resignFirstResponder];

    }

    return YES;
    }

答案 1 :(得分:1)

确保您已设置文本字段的委托。

答案 2 :(得分:1)

您的代码存在的问题是,您正在检查UITextField是否nilnil不等于-(BOOL) textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 。因此,无论何时检查条件,它总是进入第一种情况并返回(另一种情况在其他情况下)。以下方案也适用:

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

else

在第二种情况下,只需删除Do it @Neelam Verma's way.关键字。

{{1}}

我会建议第一种情况迫使第一响应者辞职而不检查任何条件......

答案 3 :(得分:0)

使用委托 UITextFieldDelegate

在您的实现类中,您有两个步骤:

  1. 设置代理

    self.textField.delegate = self;

  2. 实施此方法

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

答案 4 :(得分:0)

当用户点击文本键盘上的“完成”按钮时,“结束时退出” 将生成事件,并且在那时,我们需要告诉文本字段放弃控制 这样键盘就会消失。为此,我们需要添加一个动作方法 到我们的控制器类。 怎么样:

在你的。 h:

- (IBAction)textFieldDoneEditing:(id)sender;
你的.m中的

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

答案 5 :(得分:0)

这可能会对你有帮助!

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