将点击手势添加到插座集合
Adding tap gesture to outlet collection
为我的 UILabel
添加一个 UITapGestureRecognizer
。我为 UILabels
创建了一个 outlet collection
,我想将点击事件添加到其中。这是我的代码:
Outlet Collection Name = viewLabels
let removeLabelTapGesture = UITapGestureRecognizer(target: self, action: #selector(removeTagLabel(_:)))
for label in (0..<viewLabels.count) {
viewLabels[label].addGestureRecognizer(removeLabelTapGesture)
}
@objc func removeTagLabel(_ sender: UITapGestureRecognizer) {
print ("inside removeTagLabel")
}
我正在遍历我的奥特莱斯系列并将 gesture recognizer
添加到每个 UILabel
。控制台中没有打印任何内容。
经过几个小时的思考,我想尝试将 gesture recognizer
单独添加到每个 UILabel
。
viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
现在这适用于 UILabels
之一。按照这种方法,如果我单独执行它,它会将 gesture event
添加到我添加事件的最后一个 UILabel
。
viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
.
.
.
viewLabels[x].addGestureRecognizer(removeLabelTapGesture) //Will add gesture event to this UILabel
有没有办法将 gesture recognizer
添加到我的每个 UILabels
?
None 您的方法有效。问题是您的代码试图将完全相同的点击手势识别器添加到所有标签。你不能那样做,就像你自己不能同时在纽约和伦敦一样。
一个手势只能与一个视图相关联
for label in viewLabels {
let removeLabelTapGesture = UITapGestureRecognizer(target: self, action: #selector(removeTagLabel(_:)))
label.addGestureRecognizer(removeLabelTapGesture)
}
例如创建一个 UIImageView ,并将它多次添加到 self.view ,你只会得到它一次,因为它是一个单一的对象
为我的 UILabel
添加一个 UITapGestureRecognizer
。我为 UILabels
创建了一个 outlet collection
,我想将点击事件添加到其中。这是我的代码:
Outlet Collection Name = viewLabels
let removeLabelTapGesture = UITapGestureRecognizer(target: self, action: #selector(removeTagLabel(_:)))
for label in (0..<viewLabels.count) {
viewLabels[label].addGestureRecognizer(removeLabelTapGesture)
}
@objc func removeTagLabel(_ sender: UITapGestureRecognizer) {
print ("inside removeTagLabel")
}
我正在遍历我的奥特莱斯系列并将 gesture recognizer
添加到每个 UILabel
。控制台中没有打印任何内容。
经过几个小时的思考,我想尝试将 gesture recognizer
单独添加到每个 UILabel
。
viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
现在这适用于 UILabels
之一。按照这种方法,如果我单独执行它,它会将 gesture event
添加到我添加事件的最后一个 UILabel
。
viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
.
.
.
viewLabels[x].addGestureRecognizer(removeLabelTapGesture) //Will add gesture event to this UILabel
有没有办法将 gesture recognizer
添加到我的每个 UILabels
?
None 您的方法有效。问题是您的代码试图将完全相同的点击手势识别器添加到所有标签。你不能那样做,就像你自己不能同时在纽约和伦敦一样。
一个手势只能与一个视图相关联
for label in viewLabels {
let removeLabelTapGesture = UITapGestureRecognizer(target: self, action: #selector(removeTagLabel(_:)))
label.addGestureRecognizer(removeLabelTapGesture)
}
例如创建一个 UIImageView ,并将它多次添加到 self.view ,你只会得到它一次,因为它是一个单一的对象