2017-09-27 44 views
8

Çoklu görev özellikleri, iOS 11'de güncelleştirmeler aldı, bunlardan biri aşağıdaki gifte gösterilen slide over idi. Başka bir uygulama benim app üzerinde "üzerinde slayt" ise algılamak için techniques that check frame size from iOS 9 kullanmak artık mümkün değildir Bu değişikliklerleiOS 11'de başka bir uygulamanın slayt olarak çalışıp çalışmadığını tespit etme?

enter image description here

.

Başka bir uygulamanın üzerinde slayt olarak çalışıp çalışmadığını algılayacak yeni bir yöntem var mı?

+5

Birisi oy kullandı ve bu soruyu "Çok geniş" olduğu için kapalı olması için oyladı - Bu soruya bir yanıt önermeden nasıl daha ayrıntılı bir şekilde bilgi edinebileceğinizi anlamıyorum. Soru hakkında daha fazla bilgiye ihtiyaç duyduğunuzu düşünüyorsanız, oylama yapmak yerine yorumda bulunun. –

+0

Bir güncelleştirme, bunu çözmek için bir şeyler bulmaya çalışırken oldukça fazla zaman harcadım - ancak başka bir uygulamanın görebildiğim kadarıyla slayt gösterip göstermediğini kontrol etmek için herkese açık bir yöntem yoktur. –

+0

Kullanıcı, uygulama üzerinde bir slayt eklediğinde, applicationWillResignActive öğesinin çağrılacağını belgeler. Belki de burada bulunan bilgilerden kendi çözümünüzü oluşturabilirsiniz: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html#//apple_ref/doc/uid/TP40015145-CH13 -SW1 – Maurice

cevap

2

Bu çalışmayı oldukça kolay bir şekilde iPad Pro'da (yalnızca slayt kaydırmaya değil yan yana uygulamalara da destek olur) elde edebildim.

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

sonuç buna görünümü tam ekran ve başka bir uygulama ile ekran paylaşımı eğer "yanlış" ise "true" yazdırmak olacağını ve bu gösterildiği her seferde bir şey çalıştırılır: İşte kod , gizli veya yeniden boyutlandırıldı.

Burada, sonucu gösteren basit bir video yaptı:

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

sorun sonra sadece slayt üzerinde desteklemek eski cihazlar olduğunu. Bunlarla, uygulamanız artık yeniden boyutlandırılmıyor. Bunun yerine, sadece aktif kullanımı istifa ediyor ve diğer uygulama aktif hale geliyor.

Bu durumda, applicationWillResignActive ve applicationDidBecomeActive için AppDelegate'a bakmanız yeterlidir. Kaydırdığınızda, applicationWillResignActive olsun, applicationDidEnterBackground'u almazsınız.

Bunu bir olasılık olarak düşünebilirsiniz, ancak ekranın üst kısmından aşağı doğru kaydırarak bir sürükle ve Bildirimler'in görünümünü ayırt edemezsiniz. Bu nedenle ideal değil, ancak uygulama yaşam döngüsünü izlemek muhtemelen yapabileceğiniz en iyisidir.