如果swift中触发了按钮上的长按手势,如何获取按钮文本?
How to get the button text if a long press gesture on the button is triggered in swift?
我定义了一个按钮,并为该按钮添加了一个长按手势识别器。我知道可以通过定义如下所示的函数来完成某些操作。但是当检测到手势时,如何获取与按钮关联的标签文本?
var removeBottomButton: UIButton = UIButton()
// set up the button
override func viewDidLoad() {
super.viewDidLoad()
self.setRemoveButton()
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(clearBottom))
self.removeBottomButton.addGestureRecognizer(longGesture)
longGesture.minimumPressDuration = 1.5
}
func setRemoveButton() {
removeBottomButton = UIButton(type: UIButton.ButtonType.system)
removeBottomButton.translatesAutoresizingMaskIntoConstraints = false
removeBottomButton.setTitle("Item Name AAA", for: .normal)
removeBottomButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
removeBottomButton.setTitleColor(UIColor.white, for: UIControl.State.normal)
removeBottomButton.backgroundColor = UIColor.black
removeBottomButton.layer.borderColor = UIColor.red.cgColor
removeBottomButton.layer.cornerRadius = 10.0
removeBottomButton.isUserInteractionEnabled = true
view.addSubview(removeBottomButton)
removeBottomButton.topAnchor.constraint(equalTo: view.bottomAnchor, constant: CGFloat(-50)).isActive = true
removeBottomButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: CGFloat(20)).isActive = true
removeBottomButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: CGFloat(-20)).isActive = true
removeBottomButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: CGFloat(-20)).isActive = true
}
//do something when the gesture is detected
@objc func clearBottom(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
// how do I get the button text here? (i.e. "Item Name AAA")
}
}
做
@objc func clearBottom(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
// how do I get the button text here? (i.e. "Item Name AAA")
let button = sender.view as! UIButton
print(button.titleLabel?.text)
}
}
我定义了一个按钮,并为该按钮添加了一个长按手势识别器。我知道可以通过定义如下所示的函数来完成某些操作。但是当检测到手势时,如何获取与按钮关联的标签文本?
var removeBottomButton: UIButton = UIButton()
// set up the button
override func viewDidLoad() {
super.viewDidLoad()
self.setRemoveButton()
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(clearBottom))
self.removeBottomButton.addGestureRecognizer(longGesture)
longGesture.minimumPressDuration = 1.5
}
func setRemoveButton() {
removeBottomButton = UIButton(type: UIButton.ButtonType.system)
removeBottomButton.translatesAutoresizingMaskIntoConstraints = false
removeBottomButton.setTitle("Item Name AAA", for: .normal)
removeBottomButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
removeBottomButton.setTitleColor(UIColor.white, for: UIControl.State.normal)
removeBottomButton.backgroundColor = UIColor.black
removeBottomButton.layer.borderColor = UIColor.red.cgColor
removeBottomButton.layer.cornerRadius = 10.0
removeBottomButton.isUserInteractionEnabled = true
view.addSubview(removeBottomButton)
removeBottomButton.topAnchor.constraint(equalTo: view.bottomAnchor, constant: CGFloat(-50)).isActive = true
removeBottomButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: CGFloat(20)).isActive = true
removeBottomButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: CGFloat(-20)).isActive = true
removeBottomButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: CGFloat(-20)).isActive = true
}
//do something when the gesture is detected
@objc func clearBottom(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
// how do I get the button text here? (i.e. "Item Name AAA")
}
}
做
@objc func clearBottom(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
// how do I get the button text here? (i.e. "Item Name AAA")
let button = sender.view as! UIButton
print(button.titleLabel?.text)
}
}