gpt4 book ai didi

ios - 触摸 UITextField 之外的任何地方时如何关闭键盘(快速)?

转载 作者:行者123 更新时间:2023-11-29 05:47:10 25 4
gpt4 key购买 nike

我正在开发一个具有 UIViewController 的项目,在 View Controller 上有一个 UIScrollView 和 ScrollView 上的 UITextField。像这样: 在文本字段中输入一些文本并点击文本字段之外的任意位置后,我试图关闭键盘并隐藏它。我尝试过以下代码:

override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self;
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}

当我点击 ScrollView 外部时,它对我有用,但是当我点击 ScrollView 时,什么也没有发生,键盘也不会隐藏。

点击文本字段外的任意位置时,有什么方法可以关闭键盘吗?谢谢

最佳答案

针对 Swift 4 进行编辑

编辑:添加了@objc。虽然这不是性能的最佳选择,但在出现更好的解决方案之前,这里的一个实例不会造成太多问题。

编辑以修复需要与 GestureRecognizer 后面的项目交互时的问题。

编辑:感谢@Rao 指出了这一点。添加了tap.cancelsTouchesInView = false

这应该可以帮助您拥有多个 UITextViewUITextField

创建 View Controller 的扩展。与尝试使用 .resignFirstResponder()

相比,这对我来说更加顺利,并且麻烦更少
extension UIViewController
{
func setupToHideKeyboardOnTapOnView()
{
let tap: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(UIViewController.dismissKeyboard))

tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}

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

在viewDidLoad中调用self.setupToHideKeyboardOnTapOnView()

关于ios - 触摸 UITextField 之外的任何地方时如何关闭键盘(快速)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56029099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com