В прямой ссылки на этот вопрос:Предотвратить вращение ABPersonViewController и ABNewPersonViewController на iOS6
Как я могу предотвратить этот экран от вращения в IOS 6, когда я не один толкая контроллер представления ? Сценарий: я создаю новый контакт, а затем пользователь нажимает кнопки «Создать новый контакт» или «Добавить в существующий контакт». Созданный экран является ABNewPersonViewController, но поскольку у меня нет прямого доступа к методам вращения, я не могу предотвратить его вращение.
Скриншот:
Это изображение берется из подкласса ABUnknownPersonViewController
, в этом подкласс только функциональность я реализован, чтобы переопределить методы вращения следующим образом:
- (BOOL)shouldAutorotate
{
return NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
if(toInterfaceOrientation == UIInterfaceOrientationPortrait)
return YES;
return NO;
}
Однако проблема заключается в том, что я не могу подклассифицировать экран ABNewPersonViewController
, который выталкивается, когда одна из кнопок в e над изображением нажата, чтобы переопределить вращение на iOS 6. Любые идеи о том, как я могу законно получить доступ к этим кнопкам ИЛИ переопределить вращение на экране, которое было нажато, чтобы это не было сделано?
UPDATE 1:
Я попытался создать категорию на ABNewPersonViewController
и ABUnknownPersonViewController
, что перегрузили методы вращения (не идеальный, я знаю), а затем по всему миру импортируемого, но это не сработало. Кроме этого, я полностью придерживаюсь идей о том, как отменить это поведение. Какие-либо предложения?
UPDATE 2:
Можно ли получить ссылку на кнопки в этом UITableView
и переопределить методы, которые они называют? Или это нарушает условия Apple, обращаясь к частным API? Пытаться исследовать этот подход до сих пор и не получить никуда.
В iOS 6, какие виды ориентации могут вращаться, управляется контроллером представления, если только представленный вид не является полноэкранным (модальным). Можете ли вы подробно рассказать о своей иерархии диспетчера просмотров/навигации? Зная, какие контроллеры просмотра у вас есть и что представляет, я могу помочь вам выяснить, где использовать методы ориентации для блокировки изменений ориентации. –
Снимок экрана выше - это вершина стека контроллера View, он был вставлен в стек и является подклассом ABUnknownPersonViewController, в этом подклассе я переопределяю методы вращения, чтобы предотвратить его вращение. Когда нажата кнопка «Создать или добавить существующую», ABNewPersonViewController представлен из подкласса ABUnknownPersonViewController, но у меня нет доступа к этому коду, надеюсь, что это объяснит это. – Tim
А, ок, см. Мой ответ ниже. –