我想连接一个动作,以便如果该手势是轻击,它确实会以特定方式为对象设置动画,但是如果按下时间超过0.5秒,它将执行其他操作。
现在,我只是将动画连接起来。我不知道如何区分长按和水龙头?我如何获得新闻发布时间以实现上述目标?
@IBAction func tapOrHold(sender: AnyObject) { UIView.animateKeyframesWithDuration(duration, delay: delay, options: options, animations: { UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0, animations: { self.polyRotate.transform = CGAffineTransformMakeRotation(1/3 * CGFloat(M_PI * 2)) }) UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0, animations: { self.polyRotate.transform = CGAffineTransformMakeRotation(2/3 * CGFloat(M_PI * 2)) }) UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0, animations: { self.polyRotate.transform = CGAffineTransformMakeRotation(3/3 * CGFloat(M_PI * 2)) }) }, completion: { (Bool) in let vc : AnyObject! = self.storyboard?.instantiateViewControllerWithIdentifier("NextView") self.showViewController(vc as UIViewController, sender: vc) })
定义两个IBActions并Gesture Recognizer为每个设置一个。这样,您可以为每个手势执行两种不同的操作。
IBActions
Gesture Recognizer
您可以Gesture Recognizer在界面构建器中将每个设置为不同的IBAction。
@IBAction func tapped(sender: UITapGestureRecognizer) { println("tapped") //Your animation code. } @IBAction func longPressed(sender: UILongPressGestureRecognizer) { println("longpressed") //Different code }
通过没有界面构建器的代码
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:") self.view.addGestureRecognizer(tapGestureRecognizer) let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:") self.view.addGestureRecognizer(longPressRecognizer) func tapped(sender: UITapGestureRecognizer) { println("tapped") } func longPressed(sender: UILongPressGestureRecognizer) { println("longpressed") }
斯威夫特5
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped)) self.view.addGestureRecognizer(tapGestureRecognizer) let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressed)) self.view.addGestureRecognizer(longPressRecognizer) @objc func tapped(sender: UITapGestureRecognizer){ print("tapped") } @objc func longPressed(sender: UILongPressGestureRecognizer) { print("longpressed") }