代码之家  ›  专栏  ›  技术社区  ›  srikanth rongali

如何在输入文本后使键盘消失?

  •  1
  • srikanth rongali  · 技术社区  · 14 年前

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

    1. 在textfield1中输入文本后,我在textfield2中输入文本。再次单击textfield1时,上一个文本将消失在textfield1中。

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

    我怎么能做这个。 谢谢您。

    - (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 回复  |  直到 14 年前
        1
  •  1
  •   Laurent Etiemble    14 年前

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

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

    Managing Keyboard 中的节 UITextField 文档。

        2
  •  0
  •   srikanth rongali    14 年前

    我得到了结果。我的第一个错误是我没有在接口中添加uitextfieldelegate。剩下的我修改了代码。

    - (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中输入文本后,如果触摸return,光标将转到textfield2。它工作得很好。但当我触摸屏幕上的文本字段时,键盘并没有消失。 谢谢您。