gpt4 book ai didi

ios - 屏幕底部的 UIButton 的 TouchDown 延迟

转载 作者:搜寻专家 更新时间:2023-11-01 06:55:33 25 4
gpt4 key购买 nike

我有一个 UIButton在聊天屏幕的底部。我用 TouchDown检测用户开始按住按钮并开始录音(标准 Messenger 应用程序功能)。

问题是,当按钮位于屏幕底部时,从我开始按住按钮到那一刻有 1 秒的延迟 TouchDown火灾。

当键盘显示,底部向上移动屏幕时,完全没有延迟。

我发现了一个类似的问题,iOS - Delayed "Touch Down" event for UIButton in UITableViewCell但按钮不在表格 View 或 ScrollView 中

覆盖 touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)按钮的方法和仅打印事件表明它也有相同的滞后。

这让我觉得延迟与屏幕底部的按钮位置有关。

最佳答案

事实证明,https://stackoverflow.com/a/47255802/581164 暗示了这一点,延迟是由于 iOS 在用户实际执行系统手势(如从屏幕底部滑动)而不是点击按钮时等待造成的。

如果我在 Root View Controller 上覆盖 var preferredScreenEdgesDeferringSystemGestures: UIRectEdge 并将其设置为 [.bottom, .right] 则没有延迟。我不知道为什么 [.bottom] 不够用,我猜还有一些其他的 iOS 手势可以从屏幕的右边缘滑动,按钮位于右下角。

总是只设置 [.bottom, .right] 会产生一些负面影响,用户必须滑动 2 次才能执行 iOS 从底部滑动的手势。

关键似乎是仅在用户要按下录制按钮时设置它,例如 func point(inside point: CGPoint, with event: UIEvent?) -> Bool 和然后在用户释放按钮时将其重新设置。

关于ios - 屏幕底部的 UIButton 的 TouchDown 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com