0

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

我现在遇到的问题是,当用户按住触摸,然后在释放之前,会出现一个本机弹出窗口(电池电量不足,计时器,...),这不会触发对 touchesCancelled 的调用。相反,当用户停止触摸屏幕时,它会触发 touchesEnded。

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

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

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

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

谢谢,萨沙

4

1 回答 1

0

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

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

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

于 2016-08-18T13:06:25.777 回答