Disable a Button for 90 sec when pressed in swift

烈酒焚心 提交于 2019-12-07 16:49:01

问题


I have button that show up a modal view but i want that if the user click it he wont be able to use it again for 90 seconds. how can i do this?


回答1:


In the IBAction of the button disable the button and set a timer like this:

self.button.enabled = false
NSTimer.scheduledTimerWithTimeInterval(90, target: self, selector: "enableButton", userInfo: nil, repeats: false)

And create the func called when the timer ends counting:

func enableButton() {
    self.button.enabled = true
} 



回答2:


#Swift 3

Write this code where you want to disable button.

self.buttonTest.isEnabled = false
Timer.scheduledTimer(timeInterval: 90, target: self, selector: #selector(ViewController.enableButton), userInfo: nil, repeats: false)

Here buttonTest is the Outlet of that button.

And Write this code anywhere inside of your ViewController

 func enableButton() {
        self.buttonTest.isEnabled = true
    }

Let me know for any clarification. Thank You.




回答3:


Swift 4

sender.isUserInteractionEnabled = false
Timer.scheduledTimer(withTimeInterval: 90, repeats: false, block: { _ in
    sender.isUserInteractionEnabled = true
})



回答4:


Swift 3

I wanted this answer to be much generic so developers find it more helpful

first , is the button hooked as an Outlet or as an action ? in both cases you will need to connect it as an outlet

second, I recommend you using a closure instead of writing a func then calling it you can simply do the following

   @IBOutlet weak var buttonWithTimer: UIButton!{
    didSet{
        self.buttonWithTimer.isEnabled = false
        Timer.scheduledTimer(withTimeInterval: 90, repeats: false) {  
             [weak self]timer in
            self?.buttonWithTimer.isEnabled = true
        } // [weak self]inside the closure is to break a possible    
          // memory sicle  
    }
}


来源:https://stackoverflow.com/questions/26755014/disable-a-button-for-90-sec-when-pressed-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!