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的主要内容,如果未能解决你的问题,请参考以下文章

Qt之获取本机网络信息(超详细)

应用程序在后台时未触发 iOS 本地通知

Qt之获取本机网络信息(MAC, IP等等,很全)

排毒。点击IOS本机系统弹出不起作用

如何获取局域网内主机信息-连接网络帐号\密码

从弹出控制器ios获取按钮控制