Swift 4中如何在UITextField输入时通过‘Done’按钮隐藏键盘?
在Swift 4中通过UITextField的Done按钮隐藏键盘
嘿,这个需求在iOS开发里太常见了,我给你分享两种实用的实现方式,都是Swift 4下完全适配的:
方法一:使用UITextFieldDelegate代理(最标准的做法)
这是官方推荐的实现方式,逻辑清晰,也方便后续扩展处理更多TextField相关逻辑:
让你的ViewController遵循
UITextFieldDelegate协议
在ViewController的类声明里加上协议:class YourViewController: UIViewController, UITextFieldDelegate { // 你的页面代码... }在
viewDidLoad中配置TextField
假设你已经通过IBOutlet把TextField连接到代码里(比如命名为inputTextField),在viewDidLoad里设置代理和返回键类型:override func viewDidLoad() { super.viewDidLoad() // 将TextField的代理设置为当前ViewController inputTextField.delegate = self // 把键盘的返回键样式设置为Done inputTextField.returnKeyType = .done }实现代理方法隐藏键盘
添加textFieldShouldReturn方法,当用户点击Done按钮时触发:func textFieldShouldReturn(_ textField: UITextField) -> Bool { // 让当前编辑的TextField放弃第一响应者身份,键盘就会隐藏 textField.resignFirstResponder() // 如果页面有多个TextField,也可以用这句一次性收起所有键盘 // self.view.endEditing(true) return true }
方法二:通过Target-Action绑定(更轻量化的做法)
如果你不想引入代理,也可以直接给TextField绑定Done按钮的点击事件:
在
viewDidLoad中绑定事件override func viewDidLoad() { super.viewDidLoad() inputTextField.returnKeyType = .done // 绑定Done按钮的触发事件到自定义方法 inputTextField.addTarget(self, action: #selector(hideKeyboard), for: .primaryActionTriggered) }实现隐藏键盘的方法
@objc func hideKeyboard() { inputTextField.resignFirstResponder() // 多TextField场景同样可以用self.view.endEditing(true)统一处理 }
两种方法都能完美实现需求,你可以根据自己的代码结构选合适的~
内容的提问来源于stack exchange,提问作者Unknown_
相关产品推荐
相关产品推荐

