如何在 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。設定委託屬性以呼叫委託方法是必要的。