如何检测另一个应用程序是否在iOS 11中作为幻灯片运行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测另一个应用程序是否在iOS 11中作为幻灯片运行?相关的知识,希望对你有一定的参考价值。

多任务处理功能在ios 11中得到了更新,其中一个是slide over,在下面的gif中进行了演示。

enter image description here

通过这些更改,不再可能使用techniques that check frame size from iOS 9来检测是否有其他应用程序在我的应用程序上“滑过”。

是否有任何新方法可以检测另一个应用是否以幻灯片形式运行?

答案

我能够在iPad Pro(它支持并排应用程序,而不仅仅是幻灯片)上轻松地使用它。这是代码:

class ViewController: UIViewController {

    override func viewWillLayoutSubviews() {
        isThisAppFullScreen()
    }

    @discardableResult func isThisAppFullScreen() -> Bool {
        let isFullScreen = UIApplication.shared.keyWindow?.frame == UIScreen.main.bounds
        print("(#function) - (isFullScreen)")
        return isFullScreen
    }
}

最终结果是,如果视图是全屏,它将打印“true”,如果它与另一个应用程序共享屏幕,则打印为“false”,并且每次显示,隐藏或调整大小时都会运行此操作。

我做了一个简单的视频显示结果,这里:

https://www.dropbox.com/s/g8pqboj9jjhnlca/FullScreenOrNotTest.mov?dl=0

那么问题是只支持滑动的旧设备。有了这些,您的应用程序将不再调整大小。相反,它只是辞职正在使用,而另一个应用程序正在变得活跃。

在这种情况下,你所能做的只是将逻辑放在AppDelegate中寻找applicationWillResignActiveapplicationDidBecomeActive。当你滑过时,你会得到applicationWillResignActive而不是applicationDidEnterBackground

您可以将此作为一种可能性进行查找,但无法区分滑动和通知从屏幕顶部向下滑动。由于这个原因,它并不理想,但监控应用程序生命周期可能是您可以做的最好的。

以上是关于如何检测另一个应用程序是否在iOS 11中作为幻灯片运行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 将 OpenOffice 幻灯片从一个演示文稿复制到另一个演示文稿

如何在 ios 的标签栏控制器内添加幻灯片菜单?

在 iOS8 中检测弹出框关闭

5月11日——IOS下如何检测用户是否安装微信

如何使用 UWP 应用检测由另一个应用触发的 Windows 10 Toast 通知

如何检测另一个 Android 设备?