如何在 Swift 中通过按下回车键隐藏键盘?


在本文中,您将学习如何在编辑 UITextField 中的文本时隐藏键盘。在本例中,您将通过按下键盘上的回车按钮来隐藏键盘。

在 Swift 语言中,UITextField 类为我们提供了一些委托方法。它们在不同的操作或事件上被调用。我们将实现其中一个委托方法来隐藏键盘。此外,您还将看到如何在需要时更改返回类型。

在本例中,我们将通过以下步骤隐藏 UITextField 中用于输入电子邮件地址的键盘:

步骤 1 − 在此步骤中,我们将创建并自定义 UITextField 对象以输入电子邮件地址。

步骤 2 − 在此步骤中,我们将使 UITextField 符合委托并实现 textFieldShouldReturn 方法以隐藏键盘。

示例

import UIKit
class TestController: UIViewController {
   private let emailTextField = UITextField()
   override func viewDidLoad() {
      super.viewDidLoad()
      initialSetup()
   }
   private func initialSetup() {
      // basic setup
      view.backgroundColor = .white
      navigationItem.title = "UITextField"
        
      // emailTextField customization
      emailTextField.keyboardType = .emailAddress
      emailTextField.layer.cornerRadius = 8
      emailTextField.backgroundColor = UIColor(white: 0, alpha: 0.1)
      emailTextField.placeholder = "Enter email address"
      emailTextField.textAlignment = .center
      emailTextField.autocorrectionType = .no
      emailTextField.autocapitalizationType = .none
      emailTextField.returnKeyType = .done
        
      // adding the constraints to emailTextField
      view.addSubview(emailTextField)
      emailTextField.translatesAutoresizingMaskIntoConstraints = false
      emailTextField.heightAnchor.constraint(equalToConstant: 50).isActive = true
      emailTextField.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 30).isActive = true
      emailTextField.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -30).isActive = true
      emailTextField.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 50).isActive = true
   }
}

输出

运行上述代码后,将出现以下输出屏幕,其中包含用于输入电子邮件地址的输入字段:

按下回车按钮时,没有任何反应。我们希望在按下回车键时键盘消失。让我们执行隐藏键盘的过程。

设置 UITextField 委托

要获取点击回车按钮的回调,您必须设置委托属性并实现所需的方法。

emailTextField.delegate = self

在 initialSetup() 方法的最后一行添加约束后,使用上述代码行。在这里,您将 self 分配给 emailTextField 的 delegate 属性,以便在同一个控制器中实现这些方法。

添加委托属性后运行应用程序时,您将收到如下错误:

Add missing conformance to 'UITextFieldDelegate' to class 'TestController'

根据上述错误,TestController 中缺少所需的委托方法。让我们像这样实现委托方法:

extension TestController: UITextFieldDelegate {
   func textFieldShouldReturn(_ textField: UITextField) -> Bool {
      textField.resignFirstResponder()
   }
}

在本例中,当按下回车键时会调用 textFieldShouldReturn 委托方法。在文本字段上调用 resignFirstResponder() 方法,这会导致键盘被关闭。

结论

总之,您可以使用 returnKeyType 属性将按钮的返回类型更改为 done 类型。现在,您可以将委托属性分配给文本字段并实现这些方法。您需要实现 textFieldShouldReturn 方法来关闭键盘。

您可以在委托方法中调用 resignFirstResponder() 方法来取消键盘的响应。此方法在成功关闭键盘后返回布尔类型,即 true。设置委托属性以调用委托方法是必要的。

更新于: 2023年2月28日

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.