输入文字后如何让键盘消失?

时间:2010-04-21 06:13:46

标签: iphone cocoa-touch uitextfield

我的视图中有两个文本字段。我是用IB做的。我的问题是

  1. 在textField1中输入文本后,我在textField2中输入文本。当我再次单击textField1时,之前的文本在textField1中消失了。

  2. 在两个textFields中输入文本后,我需要键盘消失。但是,即使我触摸了键盘布局中的返回键,或者我触摸了文本字段外的屏幕,键盘也没有消失。

  3. 我该怎么做呢 谢谢。

    - (void)viewDidLoad 
    {
        self.title = @"Edit";
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];
    
        //[nameField becomeFirstResponder];
        nameField.clearsOnBeginEditing = NO; //First text field
        [nameField resignFirstResponder];
        //[descriptionField becomeFirstResponder];
        descriptionField.clearsOnBeginEditing = NO; //second text dield
        [descriptionField resignFirstResponder];
        [super viewDidLoad];
    }   
    
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        if (textField == nameField) {
        [nameField resignFirstResponder];
        }
        else if(textField == descriptionField){
        [descriptionField resignFirstResponder];
        }
        return YES;
    }
    

    我以上述方式做了但键盘仍未消失。在按下返回键后输入textField1中的文本后,光标不会转到textField2。我怎样才能使它发挥作用?

    谢谢。

2 个答案:

答案 0 :(得分:1)

对于问题1,请检查文本字段的clearsOnBeginEditing属性。

对于问题2,您可以将resignFirstResponder消息发送到文本字段。

请参阅Managing Keyboard文档中的UITextField部分。

答案 1 :(得分:0)

我得到了结果。我的错误中的第一件事是我没有在界面中添加UITextFieldDelegate。剩下的我在代码中做了更改。

- (void)viewDidLoad {
    self.title = @"Edit";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];

    [nameField becomeFirstResponder];
    nameField.delegate = self;
    descriptionField.delegate = self;

    [super viewDidLoad];
}

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

    NSLog(@"Return Key Pressed");
    if (textField == nameField) {
        [nameField resignFirstResponder];
        [descriptionField becomeFirstResponder];
    }
    else if(textField == descriptionField){
    [descriptionField resignFirstResponder];
    }
    return YES;
}

在textField1中输入文本后,如果我触摸返回,则光标将转到textFeild2。它运作良好。但是当我从文本字段触摸屏幕时,键盘不会消失。 谢谢。