在UITextField中按回车键时如何隐藏键盘?

时间:2010-08-26 09:52:27

标签: ios objective-c cocoa-touch delegates

单击文本字段可显示键盘。 当用户按下返回键时如何隐藏它?

12 个答案:

答案 0 :(得分:270)

首先为UITextField

制作文件委托
@interface MYLoginViewController () <UITextFieldDelegate>

@end

然后将此方法添加到您的代码中。

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

同时添加self.textField.delegate = self;

答案 1 :(得分:59)

viewDidLoad声明:

[yourTextField setDelegate:self];

然后,包括委托方法的覆盖:

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

答案 2 :(得分:15)

Swift

中尝试此操作

第1步:将代理设置为自己textField

textField.delegate = self

第2步:在您的班级声明下方添加此UITextFieldDelegate,

extension YourClassName: UITextFieldDelegate {
    func textFieldShouldReturn(textField: UITextField) -> Bool {
         textField.resignFirstResponder()
        return true
    }
}

答案 3 :(得分:13)

在swift中这样做:
首先在ViewController中实施此UITextFieldDelegate 例如。

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

现在将一个委托添加到TextField,当您在viewDidLoad方法(如下所示)或初始化方法中点击返回时,您要关闭该键盘。 例如。

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

现在添加此方法。

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}

答案 4 :(得分:1)

设置UITextField的委托,并且过度使用textFieldShouldReturn方法,在该方法中只需写下以下两行:

[textField resignFirstResponder];
return YES;

就是这样。在编写代码之前,不要忘记设置UITextField的委托,并在属性窗口中将Return键类型设置为“Done”。(command + shift + I)。

答案 5 :(得分:1)

试试这个,

[textField setDelegate: self];

然后,在textField委托方法

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

答案 6 :(得分:1)

您可以使用IBAction连接“触发主要操作”(右键单击UITextField),然后您可以终止第一个响应者(无需委派)。例 (斯威夫特4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}

答案 7 :(得分:1)

Swift 4

在视图控制器中设置UITextField的委托,field.delegate = self,然后:

extension ViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // don't force `endEditing` if you want to be asked for resigning
        // also return real flow value, not strict, like: true / false
        return textField.endEditing(false)
    }
}

答案 8 :(得分:1)

如果要隐藏键盘以供特定键盘使用 [self.view resignFirstResponder]; 如果要隐藏任何键盘,请使用[self.view endEditing:true];

答案 9 :(得分:0)

[textField resignFirstResponder];

使用此

答案 10 :(得分:0)

好吧,我认为对于新手来说,事情可能有点令人困惑。我认为正确的答案是以上所有因素的结合,至少在Swift4中是这样。

创建扩展或使用要在其中使用ViewController的视图控制器,但请确保实现UITextFieldDelegate。出于可重用性的考虑,我发现使用扩展更容易:

extension UIViewController : UITextFieldDelegate {
    ...
}
  

但其他方法也可以:

class MyViewController: UIViewController {
    ...
}

添加方法textFieldShouldReturn(取决于扩展名或ViewController中的上一个选项)

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    return textField.endEditing(false)
}

在viewDidLoad方法中,将文本字段的委托设置为self

@IBOutlet weak var myTextField: UITextField!
...

override func viewDidLoad() {
    ..
    myTextField.delegte = self;
    ..
}

应该就这些了。现在,当您按return时,应调用textFieldShouldReturn

答案 11 :(得分:0)

定义该类,然后将您的文本字段设置为使用该类,当自动按回车键时,这将自动隐藏整个键盘。

class TextFieldWithReturn: UITextField, UITextFieldDelegate
{

    required init?(coder aDecoder: NSCoder) 
    {
        super.init(coder: aDecoder)
        self.delegate = self
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool
    {
        textField.resignFirstResponder()
        return true
    }

}

然后在情节提要中需要做的就是将字段设置为使用类:

enter image description here