2015-02-03 4 views
0

Я создал пользовательское представление предупреждения, и я добавляю его в UIWindow. Проблема в том, что когда я меняю ориентацию симулятора iOS 7.1, ориентация вида предупреждения не меняется. Ориентация правильно меняется при работе с симулятором iOS 8. Вот где я добавляю его в UIWindow:Пользовательский предупреждающий просмотр не может изменить ориентацию в iOS 7.1 симуляторе

-(void)show 
{ 
    UIWindow *pWindow = [[UIApplication sharedApplication] keyWindow]; 

    [pWindow addSubview:self]; 
    self.frame = pWindow.bounds; 
} 

Вид персонализированного оповещения получает загружаемый из класса контроллера представления, когда любая клетка его табличном получает постучала:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (!self.customAlert) { 

     self.customAlert = [[[NSBundle mainBundle] loadNibNamed:@"CustomAlertViewWIthGesture copy" 
                  owner:self 
                 options:nil] objectAtIndex:0]; 
    } 

    self.customAlert.delegate = self; 

    self.customAlert.staticText = @"All 100 entities selected"; 
    self.customAlert.actionableText = @"Select all from server"; 

    [self.customAlert show]; 

} 

The Landscape view of the alert

ответ

1

Подвижность UIWindow не поддерживает поворот. UIViewController класс поддержка вращение. На самом деле это не проблема. Люди, вращающиеся подзоны окна вручную с предыдущей версии iOS. Вы должны показать свое предупреждение на UIViewController вместо UIWindow. Если вы хотите, чтобы UIWindow применяли методы ручного вращения.

+0

Насколько я знаю, обратные вызовы ориентации интерфейса реализованы только в контроллере просмотра, верно? И это должно включать переопределение размера фрейма и т. Д. Я использую ограничения макета для представления. Поэтому управление размером кадра при ориентации интерфейса не кажется мне отличной идеей. – StudentX

+0

Насколько я знаю, у вас нет выбора для управления размерами кадров. В таком состоянии я всегда предпочитаю добавлять subview в rootviewcontroller, чтобы уменьшить количество головной боли. – Tirth

+0

Yup .. :) Я отправил ответ. Для системных версий, меньших, чем iOS 8.0, представление предупреждения добавляется к первому вложенному окну окна, который по существу является контроллером представления. Для iOS 8 и выше представление предупреждения добавляется в окно, как и раньше. – StudentX

0

я сделал следующее:

UIWindow *pWindow = [UIApplication sharedApplication].keyWindow; 

    if ([[UIDevice currentDevice].systemVersion floatValue] < 8.0) { 


     [[[pWindow subviews] firstObject] addSubview:self]; 

    } 
    else { 

     [pWindow addSubview:self]; 
    } 

работает отлично. Пожалуйста, сообщите, есть ли технические проблемы с этим решением.