如果重复点击按钮,防止执行UIButton的IBAction
问题描述:
我有一个UIButton
,点击后会执行网络代码。网络代码更新服务器上的记录。如果按钮被反复点击,是否有办法阻止这个网络代码被执行,因为这会浪费资源?如果重复点击按钮,防止执行UIButton的IBAction
答
在IBAction
,按钮的isUserInteractionEnabled
属性更改为false
当网络请求执行完毕设置回true
。
答
您可以在类中添加一个标志,或使用请求对象,以确定应用是否正在发送
开始发送的值更改为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
}
}
那在大多数情况下,合适的答案,但并没有真正适合我的需要。想像一个可以打开和关闭的按钮,我不想禁用它。其实我认为一个计时器会是一个好主意,这样代码在被按下之后就会被调用。 –
没有你的问题更精确,你不能得到确切的答案。你为什么要多次推一个像按钮?计时器绝对是一个坏主意。想象一下,如果你的连接非常糟糕,那么一个请求需要30秒,1秒的计时器如何提供帮助? –