【发布时间】:2022-08-08 17:02:55
【问题描述】:
实现一种“遇险呼叫”按钮,其工作方式如下:
- 用户启动应用程序并用手掌覆盖屏幕
- 一段时间过去了,用户可能会在这段时间内引入额外的触摸或移除一些现有的(但不是全部),触摸的位置/形状可能会改变
- 当用户松开手(即移除最后一次触摸)时,应用程序会发出求救信号
基本上,应用程序应该注册两个事件:(1)触摸屏幕(2)释放所有触摸
我正在尝试使用 touchesBegan/touchesEnded 方法,这些方法适用于小区域触摸(指尖),但在全掌或什至只有手掌边缘的触摸屏上,当手仍在屏幕上时,会立即触发 touchesCancelled。显然,之后在手动释放时不会发出其他事件。
我尝试将 UIWindow 和 UIApplication 子类化并在其中覆盖 sendEvent ,但没有得到额外的信息 - 大面积触摸正在触发触摸开始并立即触摸取消,然后松开手不会发出任何信号。在某些情况下,大面积触摸根本不会触发任何事件,甚至 touchesBegan 也不会触发。基本上,iOS 不允许我使用非常基本的场景 - 仅检测屏幕触摸/释放的事实。
有什么方法可以直接查询屏幕触摸状态而不是使用响应链?或者抑制取消事件触发?或者也许我错过了什么?
标签: ios swift touchesbegan touchesended touchescancelled