Подтвердить что ты не робот

Почему splitViewController: collapseSecondaryViewController: onPrimaryViewController: не вызывается на iPhone 6 Plus?

Я применил подкласс UISplitViewController в своем приложении для обоих: iPhone и iPad. Метод, упомянутый в названии, называется, когда я поворачиваю устройство от Landscape до Portrait. Он работает очень хорошо, если я не запустил приложение на iPhone 6 Plus. Почему этот метод не называется там?

Что делать, чтобы этот метод работал?

Когда я запустил приложение на iPhone 6 Plus, все будет хорошо в обеих ориентациях. Но проблема в том, что я вращаю iPhone 6 Plus от Landscape до Portrait. Мой навигационный контроллер не будет работать, как и ожидалось.

Вот что я имею в виду:

Портрет iPhone 5s
enter image description here

Портрет iPhone 5s при выборе местоположения

enter image description here

iPhone 5s Пейзаж с выбранным местоположением

enter image description here

iPhone 5s, когда я поворачиваю с Пейзаж на портрет

enter image description here

Портрет iPhone 6 Plus

enter image description here

iPhone 6 Plus Портрет при выборе местоположения

enter image description here

Пейзаж iPhone 6 Plus с выбранным местоположением

enter image description here

iPhone 6 Plus, когда я поворачиваю с Пейзаж на портрет this is a problem, потому что мой метод splitViewController:collapseSecondaryViewController:ontoPrimaryViewController: не вызывается. UINavigationController в то время не работает. Когда я выбираю местоположение, ничего не происходит.

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

Я устанавливаю свой SplitViewController в раскадровке.

4b9b3361

Ответ 1

iPhone 6+ имеет больший экран и в некотором смысле рассматривается как iPad. Контроллер разделенного вида на iPhone 6+ попытается отобразить как основные, так и дополнительные панели так же, как на iPad, если приложение не находится в "Zoomed Display Mode".

В NSHipster есть статья, объясняющая это более подробно: http://nshipster.com/uisplitviewcontroller/