将点击手势添加到插座集合

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 ,你只会得到它一次,因为它是一个单一的对象