2014-09-25 3 views
0

Я работаю в течение 2 дней на нем и не могу решить. У меня есть полноэкранная кнопка, которую я показываю в моем UIViewController, как это;UIWindow subviews не работает на iOS 8

_tutorialButton.frame = CGRectMake(0.0f, 0.0f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); 
UIWindow *window = [[UIApplication sharedApplication].windows objectAtIndex:0]; 
[[[window subviews] objectAtIndex:0] addSubview:_tutorialButton]; 

Этот код работает именно то, что я ожидаю от iOS 7 и более ранних ОС. Однако это не работает на iOS 8. Я не хочу использовать

_tutorialButton.layer.zPosition = MAXFLOAT; 

потому что это грязное решение для меня. Также, если я использую этот метод, мне нужно скрыть свои UITabBar и UINavigationBar. Является ли это ошибкой iOS 8 или я что-то делаю неправильно?

+0

Вы пробовали новую функцию «Иерархия представления отладки» в Xcode 6? –

+0

Да, я пробовал и не вижу свою кнопку в иерархии. –

ответ

1

В iOS 8 я нашел ту же проблему. Оказалось, что на некоторых экранах UIWindow имеет несколько подзонов вместо одного и только. Добавление моего представления в последний подзаголовок UIWindow решило это, хотя я не уверен, должен ли я переработать всю свою навигацию.

Во всяком случае, попробуйте изменить свой код так:

[[[window subviews] objectAtIndex:[[window subviews] count]-1] addSubview:_tutorialButton]; 

UPD: Мое окончательное решение было добавить подвид не подобозрения UIWindows', но ввиду моей навигации контроллера вместо этого. Таким образом, вам не нужно догадываться, какой из подпрограмм UIWindow у вас есть, если есть несколько из них.

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