代码之家  ›  专栏  ›  技术社区  ›  halapgos1

向outlet集合添加tap手势

  •  -1
  • halapgos1  · 技术社区  · 6 年前

    添加 UITapGestureRecognizer 给我的 UILabel . 我创造了一个 outlet collection UILabels 我想将tap事件添加到。这是我的代码:

    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公司

    在撞了我的头几个小时后,我想试着加上 手势识别器 各自 .

    viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
    

    现在这对其中一个 . 按照这种方法,如果我单独做,它会添加 gesture event 到最后 UILabel公司

    viewLabels[0].addGestureRecognizer(removeLabelTapGesture)
    .
    .
    .
    viewLabels[x].addGestureRecognizer(removeLabelTapGesture)  //Will add gesture event to this UILabel
    

    有没有办法添加 手势识别器 对我的每一个人 ?

    2 回复  |  直到 6 年前
        1
  •  4
  •   matt    6 年前

    你的方法都不管用。问题是,您的代码试图向所有标签添加相同的点击手势识别器。你不能那样做,就像你自己不能同时在纽约和伦敦一样。

        2
  •  2
  •   Shehata Gamal    6 年前

    一个手势应该只与一个视图关联

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

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