Igo*_*man 5 uibutton uikit ios swift
我UIButton在聊天屏幕的底部有一个。我TouchDown用来检测用户开始按住按钮并开始录音(标准信使应用程序功能)。
问题是当按钮位于屏幕底部时,从我开始按住按钮的那一刻到TouchDown触发的那一刻有 1 秒的延迟。
当显示键盘并且底部向上移动屏幕时,完全没有延迟。
我发现了一个类似的问题,iOS - UITableViewCell 中 UIButton 的延迟“触摸”事件,但该按钮不在表格视图或滚动视图中
覆盖touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)按钮的方法并仅打印事件表明它也具有相同的滞后。
这让我觉得滞后与屏幕底部的按钮位置有关。
事实证明,https: //stackoverflow.com/a/47255802/581164 暗示,如果用户实际上是在执行系统手势(例如从屏幕底部滑动)而不是点击按钮,则延迟是由 iOS 等待引起的.
如果我覆盖var preferredScreenEdgesDeferringSystemGestures: UIRectEdge根视图控制器并将其设置[.bottom, .right]为没有延迟。我不知道为什么[.bottom]还不够,我猜还有一些其他的 iOS 手势可以从屏幕的右边缘滑动,按钮位于右下角。
总是只是设置[.bottom, .right]有一些负面影响,用户必须滑动 2 次才能执行 iOS 从底部滑动的手势。
关键似乎是仅在用户要按下录制按钮func point(inside point: CGPoint, with event: UIEvent?) -> Bool时才设置它,例如在用户释放按钮时将其设置回来。
| 归档时间: |
|
| 查看次数: |
967 次 |
| 最近记录: |