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

时间:2016-12-07 08:19:20

标签: ios swift swift3 uigesturerecognizer

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

这是我的代码:

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)
}

2 个答案:

答案 0 :(得分:3)

UILongPressGestureRecognizer获得了一个名为view的属性,该属性返回手势识别器附加到的视图。您可以将视图投射到UIButton,然后阅读标题。

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

答案 1 :(得分:2)

查看UILongPressGestureRecognizer UIGestureRecognizer的超类,它有一个名为view的属性,它是发送手势的视图。首选将变量命名为变量。使用标签的原因很少。

编辑如果不清楚,UIButton是UIView的子类,所以你用三等于测试引用相等:

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