2017-09-27 4 views
8

멀티 태스킹 기능은 iOS 11에서 업데이트되었습니다. 그중 하나 인 slide over은 아래 gif에 나와 있습니다. 또 다른 응용 프로그램이 내 애플 리케이션을 통해 "이상의 슬라이드가"인 경우 감지 할 techniques that check frame size from iOS 9를 사용하는 것이 더 이상 가능하지 이러한 변화와iOS 11에서 다른 앱이 슬라이드 오버로 실행되고 있는지 감지하는 방법은 무엇입니까?

enter image description here

.

다른 앱이 슬라이드 오버로 실행 중인지 검색하는 새로운 방법이 있습니까?

+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 
    } 
} 

최종 결과는보기 전체 화면과 다른 앱으로 화면을 공유 인 경우 "거짓"인 경우 "true"를 인쇄하는 것입니다, 이것은 표시 될 때마다 아무것도 실행 : 여기에 코드입니다 숨겨 지거나 크기가 조정됩니다.

은 여기, 그 결과를 보여주는 간단한 비디오를 만들어 :

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

문제는 만 슬라이드를 오버 지원하는 구형 장치입니다. 이것으로 앱의 크기가 더 이상 조정되지 않습니다. 대신, 그냥 적극적으로 사임하고 다른 애플 리케이션이 활성화되고있다.

이 경우 AppDelegate에 로직을 넣어 applicationWillResignActiveapplicationDidBecomeActive을 찾습니다. 슬라이드 오버하면 applicationWillResignActive이 표시되지만 applicationDidEnterBackground은 표시되지 않습니다.

가능성으로 보일 수도 있지만 슬라이드 오버와 화면 맨 위에서 아래로 미끄러지는 알림을 구분할 수 없습니다. 이러한 이유로 이상적인 것은 아니지만 애플리케이션 라이프 사이클을 모니터링하는 것이 최선의 방법 일 수 있습니다.