2017-09-27 25 views
8

多任務功能在iOS 11中得到了更新,其中之一是slide over,它在下面的gif中演示。如何檢測另一個應用是否在iOS 11中滑動運行?

enter image description here

有了這些變化是不再可能使用techniques that check frame size from iOS 9檢測是否有其他的應用程序是一個在我的應用程序「滑過」。

是否有任何新的方法來檢測另一個應用程序是否正在滑動運行?

+5

有人倒投了票,並投了這個問題被關閉爲「太廣泛」 - 我不明白你如何得到更詳細的,而不提出一個問題的答案。如果您覺得您需要更多關於該問題的信息,請評論而不是投票結束。 –

+0

一個更新是我花了很多時間試圖找到解決這個問題的東西 - 但是沒有公開的方法來檢查另一個應用程序是否像幻燈片一樣運行,據我所知。 –

+0

它在文檔中聲明,applicationWillResignActive將在用戶通過應用程序添加幻燈片時調用。也許你可以從這裏找到的信息構建自己的解決方案:https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13 -SW1 – Maurice

回答

2

我可以在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 
    } 
} 

最終的結果是,它會打印出「真正的」,如果認爲是全屏幕和「假」,如果它與其他應用程序共享屏幕,這是每次運行任何顯示,隱藏或調整大小。

我做了一個簡單的視頻顯示的結果,在這裏:

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

的問題則是,只有支持滑動過的舊設備。有了這些,你的應用程序不再被調整大小。相反,它只是放棄了主動使用,而另一個應用正在變得活躍。

在這種情況下,您只需將AppDelegate中的邏輯設置爲applicationWillResignActiveapplicationDidBecomeActive即可。當你滑動時,你得到applicationWillResignActive,但不是applicationDidEnterBackground

您可以將其視爲一種可能性,但無法區分幻燈片和從屏幕頂部滑下的通知。由於這個原因,這並不理想,但監控應用程序生命週期可能是您可以做的最好的。

相關問題