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

iOS Swift 点击空白区域收起键盘代码不生效问题咨询

点击空白区域收起键盘功能失效问题修复

问题原因

代码中创建手势识别器时误用了抽象基类UIGestureRecognizer,该类是所有手势识别器的父类,不具备具体的事件识别能力,无法响应点击操作,因此绑定的收起键盘方法不会被触发。

修复方法

将手势识别器替换为可响应点击事件的具体子类UITapGestureRecognizer即可,修正后核心代码如下:

override func viewDidLoad() {
    super.viewDidLoad()
    // 替换为点击手势识别器
    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(klavyeyiKapat))
    view.addGestureRecognizer(gestureRecognizer)
}

完整可运行代码:

import UIKit

class DetailsViewController: UIViewController {

    @IBOutlet weak var imageLabel: UIImageView!
    @IBOutlet weak var urunAdiLabel: UITextField!
    @IBOutlet weak var urunBedeniLabel: UITextField!
    @IBOutlet weak var urunFiyatiLabel: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(klavyeyiKapat))
        // 如果后续出现手势拦截按钮、输入框点击的问题,可打开下面这行配置
        // gestureRecognizer.cancelsTouchesInView = false
        view.addGestureRecognizer(gestureRecognizer)
    }
    
    @IBAction func kaydetButonuTiklandi(_ sender: Any) {
    }
    
    @objc func klavyeyiKapat () {
        view.endEditing(true)
    }
}

运行效果参考

代码运行截图

内容的提问来源于stack exchange,提问作者Umutcan Bostancı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:31:41