迅速-如何防止同时触摸两次

时间:2019-05-06 13:05:29

标签: swift uibutton nsoperationqueue

例如,我有2个按钮Change emailChange password,它们中的每个都调用Alamofire请求函数,并且响应数据应重新加载UI和数据方案。

重点是,此PUT请求不仅更改服务器的数据,而且生成新令牌并获取更新的用户配置文件。

当同时按下按钮,触摸开始和结束的同时,应用在解析请求后崩溃。

我正在阻止另一个UI元素(例如文本字段),我试图阻止另一个按钮,但是当同时按下它时,它将不起作用。

那么如何防止同时触摸?我不擅长OperationQueue,也许就是这样吗?是否可以检查操作是否不是首先在队列中执行并杀死它?

2 个答案:

答案 0 :(得分:3)

isExclusiveTouch中的UIButton设置为true,以便在特定时间仅触发一个按钮动作。

此代码将获取视图中包含的所有按钮,并将ExclusiveTouch设置为true:

  self.view.subviewsRecursive()
        .filter { $0 is UIButton }
        .forEach { $0.isExclusiveTouch = true }

答案 1 :(得分:0)

UIResponder对象的此问题很常见。但是,您的问题描述不清楚,您的实现似乎不太好。 在这里,要解决此快速触摸事件问题: 您的解决方案是消除UIButton的action事件。 当用户多次错误地按下按钮(或任何UIResponder对象)时,反跳也有助于防止多次执行,直到那时UI才被阻止。以下文章可能会指导您更多有关此的内容: Debouncing to tackle repeating user action