如何在BarButtonitem中检测长按

问题描述 投票:1回答:2

我在导航栏中有一个BarButtonitem。当用户单击它时,将弹出另一个视图控制器。现在,我希望当用户长按该按钮(导航栏按钮)时,我想显示一条帮助消息。谁能帮助我在longpress上检测BarButton的事件?

ios swift uinavigationbar uibarbuttonitem
2个回答
0
投票

请在didload中尝试一下:

   let back = UIImage(named: "header_backarrow")
        let backView = UIImageView(image: back)
        backView.isUserInteractionEnabled = true
        let tap = UITapGestureRecognizer(target: self, action: #selector(dismissManual))
        backView.addGestureRecognizer(tap)
        let backItem = UIBarButtonItem(customView: backView)
        navigationItem.leftBarButtonItem = backItem

0
投票

您应该创建一个按钮并将UITapGestureRecognizerUILongPressGestureRecognizer设置为您的按钮

// Create a button
let yourButton = UIButton()
yourButton.backgroundColor = .red
yourButton.setTitle("long press", for: .normal)

// Create a tap gesture recognizer
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTap))

// Create a long gesture recognizer
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(long))

// You can set minimum duration of the press action 
longGesture.minimumPressDuration = 3 //The default duration is 0.5 seconds.

// Add your gestures to button
yourButton.addGestureRecognizer(longGesture)
yourButton.addGestureRecognizer(tapGesture)

navigationItem.leftBarButtonItem = UIBarButtonItem(customView: yourButton)
@objc private func didTap() {
    print("Did Tap")
}

@objc private func long() {
    print("Long press")
}
© www.soinside.com 2019 - 2024. All rights reserved.