You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中如何在UITextField输入时通过‘Done’按钮隐藏键盘?

在Swift 4中通过UITextField的Done按钮隐藏键盘

嘿,这个需求在iOS开发里太常见了,我给你分享两种实用的实现方式,都是Swift 4下完全适配的:

方法一:使用UITextFieldDelegate代理(最标准的做法)

这是官方推荐的实现方式,逻辑清晰,也方便后续扩展处理更多TextField相关逻辑:

  1. 让你的ViewController遵循UITextFieldDelegate协议
    在ViewController的类声明里加上协议:

    class YourViewController: UIViewController, UITextFieldDelegate {
        // 你的页面代码...
    }
    
  2. 在viewDidLoad中配置TextField
    假设你已经通过IBOutlet把TextField连接到代码里(比如命名为inputTextField),在viewDidLoad里设置代理和返回键类型:

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 将TextField的代理设置为当前ViewController
        inputTextField.delegate = self
        // 把键盘的返回键样式设置为Done
        inputTextField.returnKeyType = .done
    }
    
  3. 实现代理方法隐藏键盘
    添加textFieldShouldReturn方法,当用户点击Done按钮时触发:

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // 让当前编辑的TextField放弃第一响应者身份,键盘就会隐藏
        textField.resignFirstResponder()
        // 如果页面有多个TextField,也可以用这句一次性收起所有键盘
        // self.view.endEditing(true)
        return true
    }
    

方法二:通过Target-Action绑定(更轻量化的做法)

如果你不想引入代理,也可以直接给TextField绑定Done按钮的点击事件:

  1. 在viewDidLoad中绑定事件

    override func viewDidLoad() {
        super.viewDidLoad()
        
        inputTextField.returnKeyType = .done
        // 绑定Done按钮的触发事件到自定义方法
        inputTextField.addTarget(self, action: #selector(hideKeyboard), for: .primaryActionTriggered)
    }
    
  2. 实现隐藏键盘的方法

    @objc func hideKeyboard() {
        inputTextField.resignFirstResponder()
        // 多TextField场景同样可以用self.view.endEditing(true)统一处理
    }
    

两种方法都能完美实现需求,你可以根据自己的代码结构选合适的~

内容的提问来源于stack exchange,提问作者Unknown_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:34:16