Alv*_*Wan 21 uigesturerecognizer ios uitapgesturerecognizer swift
我的手势有些麻烦.
我试图在同一个按钮上同时使用水龙头和长按,所以我已经习惯了
@IBAction func xxx (sender: UITapGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)
和
@IBAction func xxx (sender: UILongPressGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)
但是当我点击时,我的按钮似乎对这两个功能做出了反应.可能有什么问题?
func long(longpress: UIGestureRecognizer){
if(longpress.state == UIGestureRecognizerState.Ended){
homeScoreBool = !homeScoreBool
}else if(longpress.state == UIGestureRecognizerState.Began){
print("began")
}
}
Run Code Online (Sandbox Code Playgroud)
Ras*_*n L 57
很难说没有使用你的代码,你只提供了两行,但我建议你这样做:
改为为按钮创建一个插座
@IBOutlet weak var myBtn: UIButton!
Run Code Online (Sandbox Code Playgroud)
并在您viewDidLoad()添加手势按钮
let tapGesture = UITapGestureRecognizer(target: self, action: "normalTap")
let longGesture = UILongPressGestureRecognizer(target: self, action: "longTap:")
tapGesture.numberOfTapsRequired = 1
myBtn.addGestureRecognizer(tapGesture)
myBtn.addGestureRecognizer(longGesture)
Run Code Online (Sandbox Code Playgroud)
然后创建处理水龙头的动作
func normalTap(){
print("Normal tap")
}
func longTap(sender : UIGestureRecognizer){
print("Long tap")
if sender.state == .Ended {
print("UIGestureRecognizerStateEnded")
//Do Whatever You want on End of Gesture
}
else if sender.state == .Began {
print("UIGestureRecognizerStateBegan.")
//Do Whatever You want on Began of Gesture
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 3.0版本:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.normalTap))
let longGesture = UILongPressGestureRecognizer(target: self, action: Selector(("longTap:")))
tapGesture.numberOfTapsRequired = 1
myBtn.addGestureRecognizer(tapGesture)
myBtn.addGestureRecognizer(longGesture)
func normalTap(){
print("Normal tap")
}
func longTap(sender : UIGestureRecognizer){
print("Long tap")
if sender.state == .ended {
print("UIGestureRecognizerStateEnded")
//Do Whatever You want on End of Gesture
}
else if sender.state == .began {
print("UIGestureRecognizerStateBegan.")
//Do Whatever You want on Began of Gesture
}
}
Run Code Online (Sandbox Code Playgroud)
更新了Swift 4.x的语法:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(normalTap))
button.addGestureRecognizer(tapGesture)
let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(longTap))
button.addGestureRecognizer(longGesture)
@objc func normalTap(_ sender: UIGestureRecognizer){
print("Normal tap")
}
@objc func longTap(_ sender: UIGestureRecognizer){
print("Long tap")
if sender.state == .ended {
print("UIGestureRecognizerStateEnded")
//Do Whatever You want on End of Gesture
}
else if sender.state == .began {
print("UIGestureRecognizerStateBegan.")
//Do Whatever You want on Began of Gesture
}
}
Run Code Online (Sandbox Code Playgroud)