我想在按钮点击和长按时触发两个动作。我已经在我的界面构建器中添加了一个UIbutton。请问如何使用IBAction来触发两个动作?有人可以告诉我如何实现吗?
这是我用于按钮点击的代码:
@IBAction func buttonPressed (sender: UIButton) {
....
}
我可以使用这种方法吗,还是必须使用另一种方法来实现长按?
我想在按钮点击和长按时触发两个动作。我已经在我的界面构建器中添加了一个UIbutton。请问如何使用IBAction来触发两个动作?有人可以告诉我如何实现吗?
这是我用于按钮点击的代码:
@IBAction func buttonPressed (sender: UIButton) {
....
}
我可以使用这种方法吗,还是必须使用另一种方法来实现长按?
如果您想通过单击或长按按钮执行任何操作,可以通过以下方式向按钮添加手势:
@IBOutlet weak var btn: UIButton!
override func viewDidLoad() {
let tapGesture = UITapGestureRecognizer(target: self, #selector (tap)) //Tap function will call when user tap on button
let longGesture = UILongPressGestureRecognizer(target: self, #selector(long)) //Long function will call when user long press on button.
tapGesture.numberOfTapsRequired = 1
btn.addGestureRecognizer(tapGesture)
btn.addGestureRecognizer(longGesture)
}
@objc func tap() {
print("Tap happend")
}
@objc func long() {
print("Long press")
}
通过这种方式,您可以为单个按钮添加多个方法,而您只需要该按钮的Outlet即可实现。
@IBAction func buttonPressed(sender: UIButton)
)中。我能否通过编程方式添加方法? - Kamal Upasena@IBOutlet weak var countButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
addLongPressGesture()
}
@IBAction func countAction(_ sender: UIButton) {
print("Single Tap")
}
@objc func longPress(gesture: UILongPressGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.began {
print("Long Press")
}
}
func addLongPressGesture(){
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPress(gesture:)))
longPress.minimumPressDuration = 1.5
self.countButton.addGestureRecognizer(longPress)
}
//create your button using a factory (it'll be easier of course)
//For example you could have a variable in the custom class to have a unique identifier, or just use the tag property)
func createButtonWithInfo(buttonInfo: [String: Any]) -> CustomUIButton {
let button = UIButton(type: .custom)
button.tapDelegate = self
/*
Add gesture recognizers to the button as well as any other info in the buttonInfo
*/
return button
}
func buttonDelegateReceivedTapGestureRecognizerFrom(button: CustomUIButton){
//Whatever you want to do
}