我想连接一个动作,如果手势是一个点击,它确实以特定的方式动画对象,但如果按下持续时间超过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)
})
5条答案
按热度按时间vtwuwzda1#
定义两个
IBActions
,并为每个Gesture Recognizer
设置一个。这样,您可以为每个手势执行两个不同的操作。您可以在接口构建器中将每个
Gesture Recognizer
设置为不同的IBActions。通过代码,无需接口构建器
lf3rwulv2#
对于swift 2
行动
适用于Swift 4.2/ Swift 5
yptwkmov3#
通过代码,无需接口构建器
但唯一的问题是长按手势运行两次。如果你找到了任何解决方案,请在下面发表评论!
mzsu5hc04#
Swift 5使用接口构建器
对于正常的点击,你可以简单地从你的按钮创建一个
touch up inside
动作。对于长按,为按钮创建一个插座,创建点击手势识别器并将其设置为按钮,然后创建选择器方法来执行长按任务。
sigwle7e5#
iOS轻触手势和长按手势
在本例中,
onLongPress()
body不会在每次更改或结束运动时执行