我可以在故事板中通过 touchesBegan 函数设置 vc 的视图 becomeFirstResponder 吗?
Could I set vc's view becomeFirstResponder by touchesBegan func in storyboard?
在代码中,我可以使用下面的方法让 vc
的 view
becomeFirstResponder
淡化显示 keyboard
.
代码如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
我可以在故事板中设置这个 function
吗?或者单击 self.view
?
时 self.view.endEditing(true)
有一些更简单的方法
因为如果不这样做,我将把函数 upper 复制到几乎每个 vc
。
只需将它放在代码中的某处,它就会解决您的代码重复问题
extension UIViewController {
open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
self.view.endEditing(true)
}
}
我不确定这样做是否是一个好方法,也许您想重新考虑退出文本字段响应程序的架构问题,考虑您真正需要什么。
您可以创建 UIViewController 的扩展,然后为 touchesBegans 和您自己的 customTouchBegans 制作 swizzling 方法。查看 viewWillAppear 的 swizzling 方法示例
https://www.uraimo.com/2015/10/23/effective-method-swizzling-with-swift/
在代码中,我可以使用下面的方法让 vc
的 view
becomeFirstResponder
淡化显示 keyboard
.
代码如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
我可以在故事板中设置这个 function
吗?或者单击 self.view
?
self.view.endEditing(true)
有一些更简单的方法
因为如果不这样做,我将把函数 upper 复制到几乎每个 vc
。
只需将它放在代码中的某处,它就会解决您的代码重复问题
extension UIViewController {
open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
self.view.endEditing(true)
}
}
我不确定这样做是否是一个好方法,也许您想重新考虑退出文本字段响应程序的架构问题,考虑您真正需要什么。
您可以创建 UIViewController 的扩展,然后为 touchesBegans 和您自己的 customTouchBegans 制作 swizzling 方法。查看 viewWillAppear 的 swizzling 方法示例 https://www.uraimo.com/2015/10/23/effective-method-swizzling-with-swift/