Наскоро съм изправен пред проблем в приложението ми на iphone 6+ IOS8.3. Въпросът е, че аз съм с uitabbarController в моя ап и всеки раздел на раздел бар контролер съдържа uinavigationController.
Сега, когато изберете 6-ти / 7-ми раздел, като отидете в раздела Още и след това завъртете екрана, след това се появява черен екран.
За да тествате сценария, направих един saperate applictaion и направих една и съща структура, т.е. направи 9 табове и всеки раздел съдържа навигационен контролер. Всичко това е направено на сценария и не е написан код.
След това стартирам приложението и изберете 6-ти раздел и завъртете екрана, появява се черният екран. и когато се въртя обратно към портрета, отново всичко се оправи.
Прилагам снимки на екрана за допълнително обяснение.
Така че всеки, който може да каже защо се превръща в черен екран? Правя го погрешно? или Това е грешка на IOS8.3 или нещо друго?
Отговори:
0 за отговор № 1Аз се сблъсках със същия проблем днес и тъй като този въпрос все още не е отговорен, бих искал да представя моето просто решение.
В подкласа на UITabbarController се абонирайте за ротационните събития:
[[NSNotificationCenter defaultCenter] addObserver:self //Add yourself as an observer selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:[UIDevice currentDevice]];
Добавете следния код към метода за наблюдение на ротация:
- (void) orientationChanged:(NSNotification *)notification { if (IS_IPHONE_6P) { // some magic to figure out if we"re on iphone 6 plus self.customizableViewControllers = @[]; // we don"t want an edit button to appear if (self.selectedIndex == 5 || self.selectedIndex == 6) { // the effect only happens to view controllers at index 5 and 6. [self.moreNavigationController popToRootViewControllerAnimated:NO]; // pop the view controller from the moreNavigationViewController self.selectedViewController = self.viewControllers[self.selectedIndex]; // set the selected view controller to be visible again. } } }