Почему 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 в раскадровке.
Ответы
Ответ 1
iPhone 6+ имеет больший экран и в некотором смысле рассматривается как iPad. Контроллер разделенного вида на iPhone 6+ попытается отобразить как основные, так и дополнительные панели так же, как на iPad, если приложение не находится в "Zoomed Display Mode".
В NSHipster есть статья, объясняющая это более подробно: http://nshipster.com/uisplitviewcontroller/