swift - 如何防止两个同时触摸
swift - how to prevent two touches at the same time
例如,我有 2 个按钮 Change email
和 Change password
,每个按钮都使用 Alamofire 请求调用函数,并且响应数据应该重新加载 UI 和数据方案。
关键是这个 PUT 请求不仅会更改服务器的数据,还会生成新的令牌并获取更新的用户配置文件。
同时按下按钮时,同时触摸开始和结束,应用程序在解析请求后崩溃。
我正在阻止另一个 UI 元素(如文本字段),我试图阻止另一个按钮,但是当同时按下它时,它不起作用。
那么如何防止同时触摸呢?我不擅长 OperationQueue
,也许就是这样?是否有一个选项可以检查队列中的操作是否不是第一个并终止它?
UIResponder 对象的这个问题很常见。但是,您的问题描述不清楚,您的实施似乎不太好。
这里,解决这个快速触摸事件问题:
您的解决方案是消除 UIButton 的动作事件。
当用户错误地多次按下按钮(或任何 UIResponder 对象)时,去抖动还有助于防止多次执行,以至于 UI 直到那时才被阻止。以下文章可能会指导您更多关于相同的内容:
Debouncing to tackle repeating user action
将 UIButton
的 isExclusiveTouch
设置为 true
以便在特定时间仅触发一个按钮操作。
此代码将获取视图中包含的所有按钮并将 exclusiveTouch 设置为 true:
self.view.subviewsRecursive()
.filter { [=10=] is UIButton }
.forEach { [=10=].isExclusiveTouch = true }
例如,我有 2 个按钮 Change email
和 Change password
,每个按钮都使用 Alamofire 请求调用函数,并且响应数据应该重新加载 UI 和数据方案。
关键是这个 PUT 请求不仅会更改服务器的数据,还会生成新的令牌并获取更新的用户配置文件。
同时按下按钮时,同时触摸开始和结束,应用程序在解析请求后崩溃。
我正在阻止另一个 UI 元素(如文本字段),我试图阻止另一个按钮,但是当同时按下它时,它不起作用。
那么如何防止同时触摸呢?我不擅长 OperationQueue
,也许就是这样?是否有一个选项可以检查队列中的操作是否不是第一个并终止它?
UIResponder 对象的这个问题很常见。但是,您的问题描述不清楚,您的实施似乎不太好。 这里,解决这个快速触摸事件问题: 您的解决方案是消除 UIButton 的动作事件。 当用户错误地多次按下按钮(或任何 UIResponder 对象)时,去抖动还有助于防止多次执行,以至于 UI 直到那时才被阻止。以下文章可能会指导您更多关于相同的内容: Debouncing to tackle repeating user action
将 UIButton
的 isExclusiveTouch
设置为 true
以便在特定时间仅触发一个按钮操作。
此代码将获取视图中包含的所有按钮并将 exclusiveTouch 设置为 true:
self.view.subviewsRecursive()
.filter { [=10=] is UIButton }
.forEach { [=10=].isExclusiveTouch = true }