如何获得长按按钮当前标题

How to get long pressed button's current title

我在许多按钮上使用 UILongPressGestureRecognizer,当我长按它时,我想获得它的当前值 title.I 我对不同工作的所有按钮使用相同的标签,所以我不能使用标签来获取 title.Since 我的发件人是 UILongPressGestureRecognizer 我不能使用 sender.currentTitle!在我的行动中 too.Thank 你。

这是我的代码:

for i in self.masalarView.subviews{
        if i.tag == 102{
            i.removeFromSuperview()
        }
    }
for i in self.masalarArray{
            let masa = UIButton(frame : CGRect(x : Double(i.masaButonLeft)! , y : Double(i.masaButonTop)! , width : Double(i.masaButonGenislik)! , height : Double(i.masaButonYukselik)!))

            masa.setTitle(i.masaTableName, for: .normal)
            masa.addTarget(self, action: #selector(self.masaAction(sender:)), for: .touchUpInside)
            masa.tag = 102
            let longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressed(sender:)))
            masa.addGestureRecognizer(longPressGestureRecognizer)
            self.masalarView.addSubview(masa)
        }
 }


func longPressed(sender : UILongPressGestureRecognizer){
    //This is where i want to get my long pressed button title
    self.performSegue(withIdentifier: "mySegue", sender: self)
}

查看 UILongPressGestureRecognizer UIGestureRecognizer 的超级 class,它有一个 属性 称为 view,它是发送手势的视图。更喜欢命名变量而不是标签。使用标签的理由很少。

如果不清楚,请编辑,UIButton 是 UIView 的子class,因此您使用三重相等测试引用相等性:

if longPressGestureRecognizer.view === mybutton { // do stuff here }

UILongPressGestureRecognizer 得到一个 属性 命名视图,return 手势识别器附加到该视图。您可以将视图投射到 UIButton,然后阅读标题。

if let button = sender.view as? UIButton {
    print(button.title)
}