iOS:获取本机弹出窗口时未获取 touchesCancelled

iOS: not getting touchesCancelled when getting a native popup

我不习惯使用原生 iOS 代码。所以请原谅我在这里遗漏了一些明显的东西。

我现在遇到的问题是,当用户按住触摸,然后在松开之前,会出现本机弹出窗口(电池电量低、计时器等),这不会触发呼叫触摸取消。 相反,它会在用户停止触摸屏幕时触发 touchesEnded。

但是,这个 touchedEnded 是用户对弹出窗口的反应,而不是使用该应用程序的主动决定,这可能会导致不正确和令人沮丧的行为。

据我所知,当失去焦点时应该触发 touchesCancelled,但在这种情况下似乎焦点并没有完全失去。

我想知道是否有任何其他方法可以检测到本机弹出窗口已打开,并让我的应用程序像触发 touchesCancelled 一样运行,并避免意外行为。

我测试了 Apple 的一些应用程序,它们有相同的(在我看来)错误行为。所以也许这是我必须忍受的事情,但我想接触更有经验的本地 iOS 开发者,并确保它。

谢谢, 萨沙

我今天又回到了这个问题。我发现当出现本机弹出窗口时,应用程序分别调用了 applicationWillResignActive 和 applicationDidBecomeActive。

在我的解决方案中,在调用 applicationWillResignActive 的那一刻,我基本上让应用程序的行为就好像每个有开始没有结束或取消的触摸都有一个 touchesCancelled。当调用实际的 touchesEnded 时,它会被忽略,因为它不再与我的应用程序中的 touchesBegan 匹配。

感觉有点像跳篮球,但这对我来说很有效。