2015-04-21 10 views
5

Ho implementato la sottoclasse di UISplitViewController nella mia app per entrambi: iPhone e iPad. Il metodo menzionato nel titolo viene chiamato quando ruoto il dispositivo dall'orientamento Landscape a Portrait. Funziona davvero bene se non eseguo l'app su iPhone 6 Plus. Perché questo metodo non è chiamato lì?Perché splitViewController: collapseSecondaryViewController: ontoPrimaryViewController: non viene chiamato su iPhone 6 Plus?

Cosa fare per far funzionare questo metodo?

Quando avvio l'app su iPhone 6 Plus, tutto va bene in entrambi gli orientamenti. Ma il problema è quando ruoto iPhone 6 Plus da Landscape a Portrait. Il mio controller di navigazione non funzionerà come previsto.

Questo è ciò che intendo:

iPhone 5s Ritratto
enter image description here

iPhone 5s Ritratto quando seleziono posizione

enter image description here

iPhone 5s Paesaggio con selezionato Lo cazione

enter image description here

5s iPhone quando ho ruotare da orizzontale a verticale

enter image description here

iPhone 6 Plus Ritratto

enter image description here

iPhone 6 Plus Ritratto quando seleziono posizione

enter image description here

iPhone 6 Paesaggio Plus con posizione selezionata

enter image description here

iPhone 6 Plus quando ho ruotare da orizzontale a verticalethis is a problem perché il mio metodo splitViewController:collapseSecondaryViewController:ontoPrimaryViewController: non è chiamato. UINavigationController in quel momento non funziona. Quando seleziono la posizione non succede nulla.

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

ho installato il mio SplitViewController in Storyboard.

+0

ho cercato di forzare splitViewController chiamare questo metodo, ma non ha aiutato –

risposta

4

iPhone 6+ ha uno schermo più grande e in qualche modo è trattato come un iPad.Un controller di visualizzazione divisa su un iPhone 6+ cercherà di visualizzare entrambi i riquadri principale e di dettaglio nello stesso modo di un iPad, a meno che l'applicazione non sia in "Modalità di visualizzazione ingrandita".

NSHipster ha un articolo che spiega più in dettaglio: http://nshipster.com/uisplitviewcontroller/

+0

io ancora non so come risolvere il problema. È possibile mantenere lo stesso comportamento su iPhone 6 Plus? –

+0

@ BartłomiejSemańczyk prova a forzare il layout desiderato con UISplitViewControllers 'preferredDisplayMode' https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISplitViewController_class/#//apple_ref/occ/instp/UISplitViewController/preferredDisplayMode –

+0

I ha fatto anche questo, ma non funziona ancora correttamente. Penso che questo sia un problema con "Zoomed Display Mode" come hai detto tu, ma non c'è questa opzione in Simulator. –

Problemi correlati