Отключить вращение для одного элемента UITabbar
У меня есть контроллер uitabbar с 4 элементами панели вкладок, и у каждого элемента панели вкладок есть контроллер uinavigation.
Мне нужно было зафиксировать ориентацию одного элемента панели uitabbar только для Portrait. Итак, я реализовал следующий код:
Создал пользовательский контроллер панели вкладок и добавил в него следующий код:
MainTabBarController.m
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// You do not need this method if you are not supporting earlier iOS Versions
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
-(NSUInteger)supportedInterfaceOrientations
{
if (self.selectedViewController)
return [self.selectedViewController supportedInterfaceOrientations];
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return YES;
}
Создал пользовательский контроллер навигации для использования в одном из элементов uitabbaritems и добавил в него следующий код:
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
return YES;
}
и для контроллера uiview в пользовательском контроллере навигации я добавил следующий код:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Приведенный выше код работает нормально. Моя проблема заключается в том, что если вы перейдете к элементу панели вкладок (ориентация которого заблокирована для Protrait), когда устройство уже находится в ландшафтном режиме, ориентация изменится на альбомную. Может кто-нибудь, пожалуйста, помогите мне, как решить мою проблему.
Спасибо, Ананд.