如果重复点击按钮,防止执行UIButton的IBAction

问题描述:

我有一个UIButton,点击后会执行网络代码。网络代码更新服务器上的记录。如果按钮被反复点击,是否有办法阻止这个网络代码被执行,因为这会浪费资源?如果重复点击按钮,防止执行UIButton的IBAction

IBAction,按钮的isUserInteractionEnabled属性更改为false当网络请求执行完毕设置回true

+0

那在大多数情况下,合适的答案,但并没有真正适合我的需要。想像一个可以打开和关闭的按钮,我不想禁用它。其实我认为一个计时器会是一个好主意,这样代码在被按下之后就会被调用。 –

+1

没有你的问题更精确,你不能得到确切的答案。你为什么要多次推一个像按钮?计时器绝对是一个坏主意。想象一下,如果你的连接非常糟糕,那么一个请求需要30秒,1秒的计时器如何提供帮助? –

您可以在类中添加一个标志,或使用请求对象,以确定应用是否正在发送

开始发送的值更改为true,就可以完成设置回假

前后

通过这种方式,您可以使用与取消按钮相同的按钮。 或者您可以显示有关发送状态

这里警报是一个示例:

class ViewController: UIViewController { 

    var isSending = false 

    @IBAction func sendTouched(_ sender: UIButton) { 

     guard !isSending else { return } 

     send() 
    } 

    func send() { 

     isSending = true 

     // send data to server 

    } 

    // call this after you finish sending 
    func notifyFinished() { 

     isSending = false 
    } 
}