Как предотвратить вращение контроллеров представления в контроллере панели вкладок? - PullRequest
3 голосов
/ 22 октября 2009

У меня есть контроллер панели вкладок, управляющий 4 вкладками. Я разделил контроллер панели вкладок на подклассы так, что shouldAutorotateToInterfaceOrientation: метод позволяет вращать только определенный контроллер представления в одной из вкладок. Все работает почти нормально: контроллеры на остальных вкладках не вращаются. Однако, когда контроллер представления, которому разрешено вращаться, фактически вращается, если пользователь касается одной из оставшихся вкладок, соответствующий контроллер представления также выглядит повернутым (даже если его shouldAutorotateToInterfaceOrientation: метод явно возвращает NO).

Как мне предотвратить это?

Для ясности, вот пример. Нажимая на вкладки 0,1 или 2 и пытаясь повернуть устройство, ничего не происходит (правильно). При нажатии на вкладку 4 и вращении устройства вид, связанный с контроллером представления вкладки 4, поворачивается (правильно). Теперь, продолжая удерживать iPhone в повернутой альбомной ориентации и нажимая на другую вкладку (0,1 или 2), открывается повернутый вид (что неверно и чего я стараюсь избегать).

1 Ответ

1 голос
/ 31 января 2011

Это обычно сообщаемая «ошибка» - однако хороший обходной путь - заставить селектор shouldAutorotateToInterfaceOrientation: срабатывать следующим образом:

- (void)viewDidAppear:(BOOL)animated {
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    UIView *view = [window.subviews objectAtIndex:0];
    [view removeFromSuperview];
    [window addSubview:view];
}
...