Фон: приложение имеет функцию встряхивания, чтобы вернуться домой. Домашний вид Поддерживает только портретную ориентацию. Если вы встряхнетесь немного сильнее, чем обычно, представление, в котором вы находитесь, начнет вращаться (это нормально), но затем оно обнаружит дрожание и выполнит popViewControlller для домашнего представления. Когда он это делает, он отлично загружает контроллер навигации, но представление под (домашним содержимым) загружается за панель и растягивается (в основном оно загружается под панелью навигации, поэтому оно растягивается вверх)
кнопка прекрасно справляется с этим из ландшафта в портрет (так как это не промежуточные переходы)
Как мне обрабатывать это изменение ориентации (из-за встряхивания), чтобы я мог вернуться в корневой контроллер представления, без загрузки представления под Панель навигации?
Правка: происходит то, что контент думает, что у него есть все представление для загрузки, поэтому он растягивается, чтобы занять весь экран, не понимая, что над ним есть панель навигации. Я могу сказать, так как загрузка изображений растянута
добавлена награда в размере 50.
Править Вот как я обнаруживаю встряски и треск
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if ( event.subtype == UIEventSubtypeMotionShake )
{
UINavigationController *navController = self.navigationController;
[[self retain] autorelease];
HomeViewController *home = [[HomeViewController alloc]init];
[navController popViewControllerAnimated:YES];
home.title =@"Home View Controller";
[home release];
}
if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];
}
Вот мой делегат приложения:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
navController = [[UINavigationController alloc]init];
[self.window addSubview:navController.view];
HomeViewController *home = [[HomeViewController alloc]init];
[[self home] setFrame:[[UIScreen mainScreen] applicationFrame]];
Я добавлю сюда макет .
Нормальный вид:
Растянутый вид после встряхивания / хлопка:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}