gpt4 book ai didi

ios - 我们应该使 tapGesture 组件成为 IBAction 还是 IBOutlet 来捕获点击事件?

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:10 26 4
gpt4 key购买 nike

当我想要在我的 ViewController 中的主视图上点击响应时

一个。我可以创建一个 IBOutlet 如下

class ViewController: UIViewController {

@IBOutlet var tapGesture: UITapGestureRecognizer!
override func viewDidLoad() {
super.viewDidLoad()
tapGesture.addTarget(self, action: #selector(tapped))
}

@objc private func tapped(_: UITapGestureRecognizer) {
print("Log is here")
}
}

或者

B.我可以在 TapGesture 上使用 IBAction,如下所示

class ViewController: UIViewController {

@IBAction func tapGestureAction(_ sender: Any) {
print("Log is here")
}
override func viewDidLoad() {
super.viewDidLoad()
}
}

是否有一个优先于另一个的首选方法?如果不是,哪种情况应该用A方式,哪种情况应该用B方式?

最佳答案

选项 B,即当您已经在 Storyboard 中创建了 UITapGestureRecognizer 时,仅使用 @IBAction socket 将是首选,因为这将尽可能多的逻辑封装在 Storyboard,减少阅读不必要代码的开销和重构代码时的潜在回归(但 Storyboard保持不变)。

您仍然可以将 @IBAction 标记为私有(private)(因为它实际上与使用 @objc 属性相同)。此外,如果您需要访问手势识别器本身,您可以使用带有 didSet 的常规 @IBOutlet 来修改它,或者更改 sender: Anysender: UITapGestureRecognizer 以在操作中访问它。

关于ios - 我们应该使 tapGesture 组件成为 IBAction 还是 IBOutlet 来捕获点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56723760/

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