У меня была эта проблема много раз, и я просто не могу найти решение для нее...
Большинство наших приложений работают только в ландшафтном режиме, и приложение, над которым я сейчас работаю (и многие из тех, над которыми я работал в прошлом), демонстрирует следующее поведение: при первом запуске приложение правильно отображается в альбомном режиме, но никакие кнопки в правой части экрана не могут быть нажаты. Приложение ведет себя так, как будто оно распознает только прикосновения к той части экрана, которая была бы видна, если бы приложение было в портретном режиме, игнорируя любые прикосновения к правой стороне экрана. Если я нажму на другой viewController, а затем вернусь к проблемному viewController, он правильно отреагирует на все прикосновения к экрану. Только при первом запуске приложение думает, что работает в портретном режиме, и не распознает касания справа от области 768x1024 (или 1536x2048, или 320x480, или 640x960).
Итак, я вижу визуальную область 1024x768, но могу нажимать только на кнопки в первых 768 пикселях экрана (самые правые 256 пикселов недоступны)
Обходной путь, который я пробовал (с ограниченным успехом — он работал раньше, но не всегда работает и не работает сейчас), включал эти строки в несколько мест, таких как AppDelegate.m, в rootViewController.m и в конкретном viewController.m, у которого есть проблема, описанная выше:
self.view.frame = CGRectMake(0.0, 0.0, 1024.0, 768.0);
//I've also tried:
CGRect landFrame = self.view.frame;
landFrame.size.width = self.view.frame.size.height;
landFrame.size.height = self.view.frame.size.width;
self.view.frame = landFrame;
ЛЮБЫЕ ИДЕИ?
Значения .plist включают:
Исходная ориентация интерфейса — Альбомная (правая кнопка «Домой»)
Поддерживаемые ориентации интерфейса:
- Пункт 0 — Пейзаж (правая кнопка «Домой»)
- Пункт 1 — Пейзаж (левая кнопка «Домой»)
У меня есть этот код в rootViewController и конкретном viewController:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (UIInterfaceOrientationIsLandscape(interfaceOrientation));
//I've also tried:
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}