iOS:获取本机弹出窗口时未获取 touchesCancelled
Posted
技术标签:
【中文标题】iOS:获取本机弹出窗口时未获取 touchesCancelled【英文标题】:iOS: not getting touchesCancelled when getting a native popup 【发布时间】:2016-08-08 15:42:27 【问题描述】:我不习惯使用原生 ios 代码。所以请原谅我在这里遗漏了一些明显的东西。
我现在遇到的问题是,当用户按住触摸,然后在释放之前,会出现本机弹出窗口(电池电量低,计时器,...),这不会触发对 touchesCancelled 的调用. 相反,当用户停止触摸屏幕时,它会触发 touchesEnded。
但是,这个 touchEnded 是用户对弹出窗口的反应,而不是使用该应用的主动决定,这可能会导致不正确和令人沮丧的行为。
据我所知,当焦点丢失时应该触发 touchesCancelled,但在这种情况下似乎焦点并没有完全丢失。
我想知道是否有任何其他方法可以检测到本机弹出窗口已打开,并让我的应用像 touchesCancelled 一样被触发,并避免意外行为。
我测试了一些来自 Apple 的应用程序,但它们的行为相同(在我看来)是错误的。所以也许这是我必须忍受的事情,但我想接触更有经验的原生 iOS 开发人员,并确保这一点。
谢谢, 萨沙
【问题讨论】:
【参考方案1】:我今天回到了这个问题。我发现当出现原生弹出窗口时,应用程序中分别调用了 applicationWillResignActive 和 applicationDidBecomeActive。
在我的解决方案中,在调用 applicationWillResignActive 的那一刻,我基本上让应用程序的行为就好像每次触摸都有一个 touchesCancelled,它有一个开始但没有结束或取消。当实际的 touchesEnded 被调用时,它会被忽略,因为它不再与我的应用中的 touchesBegan 匹配。
感觉有点像跳篮球,但这对我来说很好。
【讨论】:
以上是关于iOS:获取本机弹出窗口时未获取 touchesCancelled的主要内容,如果未能解决你的问题,请参考以下文章