[英]UIImageView image change delay when tapped
我有一个带有点击手势识别器的UIImageView。 点击时,我希望UIImageView在2张图像之间交替显示。 我拥有的代码可以实现这一点,但是当UIImageView很快被反复轻按时,UIImageView似乎会滞后并落后。
我的代码:
@IBOutlet weak var moneyButton: UIImageView!
let benchUpImage = UIImage(named: "benchUp")
let benchDownImage = UIImage(named: "benchDown")
var benchIsDown = false
func moneyButtonPressed(sender: UITapGestureRecognizer){
if benchIsDown == false{
moneyButton.image = benchDownImage
benchIsDown = true
}else{
moneyButton.image = benchUpImage
benchIsDown = false
}
}
斯威夫特3.0
您可以简单地允许用户稍稍延迟一下。 考虑将代码替换为以下代码之一
var canUserTap = true
let delayTime = 0.4 //setDelayTimming in seconds
@IBAction func moneyButtonPressed( _ sender : UITapGestureRecognizer){
if(canUserTap){
if benchIsDown == false{
moneyButton.image = benchDownImage
benchIsDown = true
}else{
moneyButton.image = benchUpImage
benchIsDown = false
}
canUserTap = false
Timer.scheduledTimer(timeInterval: delayTime,
target:self,
selector:#selector(allowUserTap(_:)),
userInfo:nil,
repeats:false)
}
}
func allowUserTap(_ timer:Timer){
canUserTap = true
}
我认为您的代码存在的问题是您不处理识别器的状态。 因此,多次轻击可以使图像在每种状态(开始,结束等)都发生变化。 尝试仅将更改的代码置于状态“ end”:
func moneyButtonPressed(sender: UITapGestureRecognizer){
if sender.state == .Ended {
if benchIsDown == false{
moneyButton.image = benchDownImage
benchIsDown = true
}else{
moneyButton.image = benchUpImage
benchIsDown = false
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.