当用户在 UITextField 之外点击时关闭键盘 [重复]

Posted

技术标签:

【中文标题】当用户在 UITextField 之外点击时关闭键盘 [重复]【英文标题】:Dismissing keyboard when user taps outside of UITextField [duplicate] 【发布时间】:2018-08-15 16:47:32 【问题描述】:

当用户在文本字段之外点击时,我有以下代码用于关闭键盘

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)

选择器函数如下:

@objc func dismissKeyboard() 
    view.endEditing(true)

第一段代码在 viewDidLoad 中,这就是我的问题所在。为什么它不起作用,如果: let tap UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) 在 vi​​ewDidLoad() 之外完成?

【问题讨论】:

【参考方案1】:

self 无法像您想要的那样访问,您可以在 VC 内的任何方法之外使用像这样的lazy var

lazy var tap =  
    return UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
()

【讨论】:

谢谢!允许 self 属性按预期工作的 () 是什么? @Sh_Khan 或其他人请回答上述问题。 docs.swift.org/swift-book/LanguageGuide/Properties.html

以上是关于当用户在 UITextField 之外点击时关闭键盘 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift:无法让 UITextField 关闭键盘

以编程方式点击 UITextField [关闭]

当用户在弹出窗口之外点击时,防止 JQuery Mobile 关闭弹出窗口

编辑 UITextField 时如何关闭键盘

Flutter - 在 AlertDialog 小部件之外点击后关闭系统键盘

当点击另一个 UITextField 时键盘不会关闭,这会带来一个选择器