如何在 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。设置委托属性以调用委托方法是必要的。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP