Событие Touch Up Inside не работает после поворота панели вкладок

У меня есть кнопка в одном из контроллеров представления панели вкладок контроллера. Все настроено в раскадровке. Я зарегистрировал метод действия, как это

- (IBAction)buttonPressed:(id)sender {
    NSLog(@"Button pressed");
}

Дело в том, что как только я накладываю левое и верхнее ограничения (чтобы оно оставалось в правом верхнем углу), подкрашивание внутри события перестает работать после того, как я меняю поворот. Так что просто откройте приложение в портретном режиме - метод работает. Перейдите в ландшафт, и я не могу нажать кнопку внезапно.

Я воссоздал проблему в этом простом примере проекта.

Большое спасибо.

2 ответа

Решение

Просто поместите следующий код в ваш класс TabBarViewController.

- (void)viewDidLayoutSubviews
{
    // fix for iOS7 bug in UITabBarController
    self.selectedViewController.view.superview.frame = self.view.bounds;
}

Недавно я заметил такую ​​же ошибку в моем приложении. Сначала я попробовал Славко по методике Петковского. Но это вызвало у меня еще одну ошибку с поворотом и получением правильных границ и рамки, поэтому я продолжил поиск.

Я нашел другое решение для этой проблемы, в основном, установив маску автоматического изменения размера представления контроллера представления в xib. Но так как стрелки в инспекторе в моем XCode (версия 5.0.1) неактивны, и вы не можете их установить, вы должны открыть XIB-файл в текстовом редакторе, найти свойство autoresizingMask для основного вида и изменить его следующим образом:

<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>

РЕДАКТИРОВАТЬ:

В качестве альтернативы вы можете сделать это в коде контроллера представления - тот же результат, что и в изменениях в xcode:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Другие вопросы по тегам