swift - 如何防止两个同时触摸

swift - how to prevent two touches at the same time

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

关键是这个 PUT 请求不仅会更改服务器的数据,还会生成新的令牌并获取更新的用户配置文件。

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

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

那么如何防止同时触摸呢?我不擅长 OperationQueue,也许就是这样?是否有一个选项可以检查队列中的操作是否不是第一个并终止它?

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

UIButtonisExclusiveTouch 设置为 true 以便在特定时间仅触发一个按钮操作。

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

  self.view.subviewsRecursive()
        .filter { [=10=] is UIButton }
        .forEach { [=10=].isExclusiveTouch = true }