2017-07-26 105 views
0

我有一个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 
    } 

} 
+0

你是什么意思“落后?” - 什么是快速点击? – Appygix

+0

也许图像太大? – GeneCode

+0

非常快速地重复点击图像视图 –

回答

0

雨燕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 

} 
0

我认为你的代码的问题是你不处理识别器的状态。因此,多次敲击可以迅速使图像在每个状态(开始,结束等)发生变化。尝试将更改后的代码置于“结束”状态:

func moneyButtonPressed(sender: UITapGestureRecognizer){ 

    if sender.state == .Ended { 
    if benchIsDown == false{ 
     moneyButton.image = benchDownImage 
     benchIsDown = true 
    }else{ 
     moneyButton.image = benchUpImage 
     benchIsDown = false 
    } 
    } 

}