获取点击的 UILabel 的值

Get value of tapped UILabel

所以我目前正在创建动态标签,我需要在点击时获取它们的值。我正在使用 for 循环创建编号为 1 到 10 的标签。然后我将它们与 UITapGestureRecognizer 一起添加到视图中以检测何时被点击。我需要做的是获取点击标签的文本。因此,如果我单击带有 1 文本的标签,我希望返回 1。这是我创建标签和添加手势识别器的方法。

   for number in numbers.characters {
       let touch = UITapGestureRecognizer(target:self, action: "numberClicked")
       touch.numberOfTapsRequired = 1

       let label = UILabel(frame: CGRectMake(CGFloat(x), CGFloat(y1), CGFloat(width), CGFloat(height)))
       label.font = label.font.fontWithSize(38)
       label.text = String(number)
       label.userInteractionEnabled = true
       label.addGestureRecognizer(touch)
       self.view.addSubview(label)
   }

下面是在您的操作函数中获取标签文本的示例。关键的变化是在点击操作的名称中添加了一个冒号,表示它需要一个 sender 参数。然后您可以访问发件人的 view 属性 以获取 UILabel 本身。

for number in numbers.characters {
    // add a colon after "numberClicked" to indicate it takes an argument
    let touch = UITapGestureRecognizer(target:self, action: "numberClicked:")
    touch.numberOfTapsRequired = 1

    let label = UILabel(frame: CGRectMake(CGFloat(x), CGFloat(y1), CGFloat(width), CGFloat(height)))
    label.font = label.font.fontWithSize(38)
    label.text = String(number)
    label.userInteractionEnabled = true
    label.addGestureRecognizer(touch)
    self.view.addSubview(label)
 }


func numberClicked(gesture: UIGestureRecognizer) {
    if gesture.state == .Ended {
        if let theLabel = (gesture.view as? UILabel)?.text {
            print(theLabel) // print the "1"
        }
    }
}