我在许多按钮上使用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)
}
答案 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 }