2012-05-22 3 views
0

Поскольку встроенный iOS UIAlertView не дает нам возможности для скининга, я создал собственный класс UIAlertViewCustom, который я использую вместо этого. Любой из моих контроллеров просмотра может отображать экземпляр UIAlertViewCustom в том же, что и UIAlertView, за исключением того, что моя версия позволяет обрезать графику/шрифты/цвета и т. Д.iPhone Как определить, какие ориентации поддерживает предыдущий контроллер представления

Мой класс UIAlertViewCustom работает, создавая новое ключевое окно и корень просмотрите контроллер. Затем я рисую представление моего сообщения на этом новом контроллере корневого представления. (Контроллер вида, который выбрал отображение сообщения, отображается в фоновом режиме так же, как вы видели с помощью UIAlertView.

Все это прекрасно работает. Существует одна функциональность, которую я хотел бы реализовать, но haven Я не понял, как это сделать. Я хотел бы, чтобы каждый экземпляр UIAlertViewCustom знал, нужно ли автоматически поворачивать его, когда меняется ориентация устройства. Конечно, я хочу знать, какие ориентации контроллер просмотра ниже (созданный контроллер представления экземпляр UIAlertViewCustom и отображаемый его) поддерживает? Если он поддерживает только портрет, то я не буду автоматически поворачивать UIAlertViewCustom и т. д.

Я не хочу, чтобы каждый контроллер представления должен был проходить в поддерживаемом свойстве ориентации каждый экземпляр UIAlertViewCustom. I просто хотел бы, чтобы каждый экземпляр UIAlertViewCustom смог выяснить, должен ли он автоматически вращаться или нет.

Любая помощь будет очень признательна!

ответ

0

Я хотел бы попробовать это в вашем классе контроллера зрения:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return [[view superview] shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
} 

Я не уверен, если это будет работать, но это, где я хотел бы начать. Это необходимо, потому что реализация по умолчанию для этого возвращает YES для UIInterfaceOrientationPortrait, а все остальное - NO.

Другая мелочь. Apple зарезервировала префиксы, которые он использует (NS, CF, CA, UI и т. Д.), И ваши пользовательские классы не должны их использовать.

EDIT Измененного [само SuperView] для [вида] надтаблиц

+0

Я попытался это, но, компилятор говорит мне, что [само SuperView] недопустимо в этом контексте. – bpatrick100

+0

Я видел эту ошибку, прежде чем отправил, но забыл ее исправить. Контроллер UIView - это не представление. – Mark

+0

Я придумал решение, которое отлично работает. У моего экземпляра UIAlertViewCustom уже была ссылка делегата на контроллер вызова. Таким образом, я смог использовать это, чтобы определить, какие ориентации поддерживаются контроллером вызова. Я еще не могу ответить на мои собственные вопросы, поэтому мне пришлось разместить комментарий в качестве комментария. Кроме того, спасибо за голову на префикс пользовательского интерфейса. – bpatrick100

Смежные вопросы