我正在处理存储在 socket 集合中的一系列 View 。
@IBOutlet var theViews: [UIView]!
在我的 viewDidLoad 函数中,我循环遍历 View 集合,在此期间我创建了一个 UITapGestureRecognizer 并将其添加到 View 中。
for v in theViews {
let tap = UITapGestureRecognizer(target: self, action: #selector(self.flipSingleView(sender))
tap.delegate = self
tap.numberOfTapsRequired = 1
tap.numberOfTouchesRequired = 1
v.addGestureRecognizer(tap)
v.isUserInteractionEnabled = true
}
这里是选择器指向的函数:
@objc func flipSingleView(sender: UITapGestureRecognizer) {
print("tapped")
}
补充说明:
你提到你的观点在一个导出集合中,所以我假设它看起来像这样:
@IBOutlet var myViews: [UIView]!
不确定您是否需要投入其中的所有东西。试试这个:
// In viewDidLoad
myViews.forEach{ view in
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture))
tap.numberOfTapsRequired = 1
tap.delegate = self
view.addGestureRecognizer(tap)
}
对于您的处理程序:
@objc func handleTap(gesture: UIGestureRecognizer) {
print("tap")
}
最后,为委托(delegate)方法添加一个部分,即使它只是空的:
extension ViewController: UIGestureRecognizerDelegate {
// TODO: Fill in as needed
}
要确定是哪个 View 发送的,您可以在 View 中添加标签。
关于ios - 以编程方式将 UITapGestureRecognizer 添加到 Outlet 集合中的 UIViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727995/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |