Създавам приложение за iPad в Xcode 4. Предполага се, че приложението винаги се показва в пейзажен изглед. за да постигна това, опитах следното:
- В екрана Обобщение на целта избирам само пейзаж вляво като поддържана ориентация на устройството.
- В екрана Target Info / Info.plist задайте Поддържаните ориентации на интерфейса (iPad) на Пейзаж (ляв начален бутон)
Това кара приложението да стартира в пейзажен режим, но ако завъртя устройството, то все още променя ориентацията си. Освен това, когато имам UIViewController, представен с presentationStyle UIPresentationFormSheet, той се завърта в портретна ориентация в момента, в който се покаже.
В някои други теми / форуми беше препоръчано да се създаде категория за UIViewController и да се пренапише
-(UIDeviceOrientation)interfaceOrientation;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
Винаги да завъртате към ориентацията на устройството (LandscapeLeft) или по-специално LandscapeLeft, също и без AutoRotate, освен ако не завъртите към LandscapeLeft.
Когато настроя тези функции по този начин (или например не разреша никакво завъртане), приложението винаги се показва в портретен режим и няма да се завърта, дори и в LandscapeLeft. Единственият начин приложението да стартира в пейзажен режим е, когато разреша завъртане, без значение каква е ориентацията на интерфейса.
Някой знае ли как мога да поправя това?
Категорията, която внедрих:
@implementation UIViewController(Extends)
-(UIDeviceOrientation)interfaceOrientation
{
return [[UIDevice currentDevice] orientation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
return YES;
else
return NO;
}
@end
Единственото място, където мога да намеря дефинирана портретна ориентация, е оригиналният прозорец на MainWindow.xib, но това не може да бъде променено и всяка нишка/форум казва, че тази конкретна настройка е/не трябва да е проблемът.