2015-04-21 7 views
5

Zaimplementowałem podklasę UISplitViewController w mojej aplikacji dla obu: iPhone i iPad. Metoda wymieniona w tytule jest wywoływana, gdy obracam urządzenie z orientacji Landscape do Portrait. Działa naprawdę fajnie, chyba że uruchomię aplikację na iPhone 6 Plus. Dlaczego ta metoda nie jest tam nazywana?Dlaczego splitViewController: collapseSecondaryViewController: onPrimaryViewController: nie jest wywoływana na iPhone 6 Plus?

Co zrobić, aby ta metoda zadziałała?

Po uruchomieniu aplikacji na iPhone 6 Plus wszystko jest w porządku w obu orientacjach. Problem polega jednak na tym, że obracam iPhone 6 Plus z Landscape do Portrait. Mój kontroler nawigacyjny nie będzie działać tak, jak się oczekuje.

To, co mam na myśli:

iPhone 5s Portret
enter image description here

iPhone 5S portret kiedy Wybierz lokalizację

enter image description here

iPhone 5s Krajobraz z wybranymi lo kation

enter image description here

iPhone 5s kiedy obracają się z poziomego na pionowy

enter image description here

iPhone 6 Plus Portret

enter image description here

iPhone 6 Plus Portret kiedy Wybierz lokalizację

enter image description here

iPhone 6 Plus Krajobraz z wybranej lokalizacji

enter image description here

iPhone 6 Plus, kiedy obraca się z poziomego na pionowythis is a problem ponieważ moja metoda splitViewController:collapseSecondaryViewController:ontoPrimaryViewController: nie jest wywoływany. UINavigationController w tym czasie nie działa. Kiedy wybieram lokalizację nic się nie dzieje.

enter image description here

class PBOSplitViewController: UISplitViewController, UISplitViewControllerDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible 
     delegate = self 
    } 

    func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -> Bool { 
     return false 
    } 
} 

mogę skonfigurować mój SplitViewController w serii ujęć.

+0

próbowałem zmusić splitViewController wywołać tę metodę, ale to nie pomogło –

Odpowiedz

4

iPhone 6+ ma większy ekran i pod pewnymi względami jest traktowany jak iPad.Sterownik podzielonego widoku na iPhone'a 6+ będzie próbował wyświetlać zarówno panel główny, jak i szczegółowy, podobnie jak na iPadzie, chyba że aplikacja znajduje się w "Powiększonym trybie wyświetlania".

NSHipster ma artykuł wyjaśniający to bardziej szczegółowo: http://nshipster.com/uisplitviewcontroller/

+0

ja nadal nie wiem, jak rozwiązać ten problem. Czy można zachować to samo zachowanie w telefonie iPhone 6 Plus? –

+0

@ BartłomiejSemańczyk spróbuj wymusić pożądany układ za pomocą metody UISplitViewController 'preferredDisplayMode' https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISplitViewController_class/#//apple_ref/occ/instp/UISplitViewController/preferredDisplayMode –

+0

zrobił to również, ale nadal nie działa poprawnie. Myślę, że jest to problem z "Zoomed Display Mode", jak powiedziałeś, ale nie ma takiej opcji w Simulatorze. –

Powiązane problemy