【发布时间】:2024-04-27 17:55:01
【问题描述】:
很确定这是一个简单的问题,但仍然无法在 Internet 上找到任何类似的东西——这又是一个相信这不是问题的理由。无论如何!
我怎样才能put a UIButton inside a UIView 和添加UITapGestureRecognizer 在视图上调用此视图中的函数,同时仍执行按钮操作?
我有什么:
- 在按钮内部点击只会执行按钮操作。
- 在按钮外部点击只会执行查看功能。
我想要什么:
- 在按钮内部点击会执行按钮操作和视图功能。
- 在按钮外部点击只会执行查看功能。
更新(我使用的代码):
import UIKit
import AwesomeFramework
class View: UIView {
let button = UIButton()
let awesomeObject = AwesomeFramework.AwesomeObject()
@objc func a(_ sender: Any) {
// never gets called
print("a")
}
init() {
super.init(frame: .zero)
button.translatesAutoresizingMaskIntoConstraints = false
addSubview(button)
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: centerXAnchor),
button.centerYAnchor.constraint(equalTo: centerYAnchor),
button.widthAnchor.constraint(equalTo: widthAnchor),
button.heightAnchor.constraint(equalTo: heightAnchor),
])
button.addTarget(awesomeObject, action: #selector(awesomeAction), for: .touchUpInside) // awesomeAction prints "b"
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(a(_:)))
addGestureRecognizer(gestureRecognizer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
点击我想要的按钮:
b
a
或
a
b
我明白了:
b
更新:对示例进行了一些限制,例如:
- 按钮在我无权访问的框架中触发操作
- 实际上有很多按钮和其他点击接收元件。我不想对所有人都使用 a-function(我也不能因为某些元素管理自己的识别器)
【问题讨论】:
标签: ios cocoa-touch uibutton uitapgesturerecognizer