UIImageView图像更改延迟时点击
问题描述:
我有一个UIImageView与点击手势识别器。点击时,我想让UIImageView在2张图片之间切换。我已经实现了这个代码,但是当UIImageView被反复快速切换时,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
}
答
我认为你的代码的问题是你不处理识别器的状态。因此,多次敲击可以迅速使图像在每个状态(开始,结束等)发生变化。尝试将更改后的代码置于“结束”状态:
func moneyButtonPressed(sender: UITapGestureRecognizer){
if sender.state == .Ended {
if benchIsDown == false{
moneyButton.image = benchDownImage
benchIsDown = true
}else{
moneyButton.image = benchUpImage
benchIsDown = false
}
}
}
你是什么意思“落后?” - 什么是快速点击? – Appygix
也许图像太大? – GeneCode
非常快速地重复点击图像视图 –