簡體   English   中英

點擊時的UIImageView圖像更改延遲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM