在Swift中,当按钮被按下时禁用该按钮90秒。

6

我有一个按钮,它会显示一个模态视图,但我希望如果用户单击它,他在90秒内将无法再次使用它。我该怎么做?

4个回答

15
在按钮的IBAction方法中,禁用该按钮并设置一个计时器,例如:
self.button.enabled = false
NSTimer.scheduledTimerWithTimeInterval(90, target: self, selector: "enableButton", userInfo: nil, repeats: false)

创建一个函数,在计时器结束倒数时调用:


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

8

Swift 4

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

3

#Swift 3

在你想要禁用按钮的位置编写以下代码。

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

这里的buttonTest是指该按钮的Outlet属性。

将下面的代码放入ViewController中的任何位置。

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

如有任何疑问,请告知。谢谢。


0

Swift 3

我希望这个答案更通用,以便开发人员找到更多有用的信息。

首先,按钮是作为输出口还是操作挂钩的? 在这两种情况下,您都需要将其连接为输出口。

其次,我建议您使用闭包而不是编写一个函数然后调用它,您可以简单地执行以下操作:

   @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  
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接