向插座集合添加点击手势

时间:2018-08-12 23:08:35

标签: ios swift uilabel uitapgesturerecognizer

向我的UITapGestureRecognizer添加一个UILabel。我已经为要添加点击事件的outlet collection创建了一个UILabels。这是我的代码:

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中?

2 个答案:

答案 0 :(得分:4)

您的方法均无效。问题是您的代码尝试将完全相同的轻击手势识别器添加到所有标签。您不能那样做,就像您自己不能同时在纽约和伦敦一样。

答案 1 :(得分:1)

手势只能与一个视图相关联

for label in viewLabels {
    let removeLabelTapGesture = UITapGestureRecognizer(target: self, action: #selector(removeTagLabel(_:))) 
    label.addGestureRecognizer(removeLabelTapGesture)
}

例如,创建一个UIImageView,并将其多次添加到self.view,由于它是单个对象,您只会获得一次