UIInterfaceOrientation Problemer - PullRequest
       8

UIInterfaceOrientation Problemer

0 голосов
/ 25 октября 2010

UIViewController A, B.

A реализует горизонтальный экран screen Поворот на B. как делать что? отменить горизонтальный экран для B.

B код:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

// Return YES for supported orientations
return NO;
}

Не в порядке! Зачем?? Пожалуйста, помогите мне ! спасибо!

Ответы [ 2 ]

0 голосов
/ 10 мая 2012

Я только что исправил это в своем приложении под iOS 5.1.Это старый вопрос, но я оставляю это здесь для потомков, так как я не видел, чтобы кто-нибудь еще решал это без применения кусков кода CGAffineTransform и не исправляя реальную проблему, которая заключается в том, что UIInterfaceOrientation и UIDeviceOrientation не синхронизированы.

В моем случае мне нужно было только исправить ориентацию, когда я переходил из ViewController, работающего только в портретной ориентации, и в ViewController, работающий в вертикальной и горизонтальной ориентации, когда устройство было физически повернуто до перехода.

// The "Interface Orientation" and the "Device Orientation" can become separated in some cases.
// Make sure the view controller only supports the interface orientation for the current device rotation. 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    int deviceRotation = [[UIDevice currentDevice] orientation];
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

    if (deviceRotation == UIDeviceOrientationUnknown ||
        deviceRotation == UIDeviceOrientationFaceUp  ||
        deviceRotation == UIDeviceOrientationFaceDown)
        return YES;

    if (deviceRotation != interfaceOrientation)
        return NO;
    else
        return YES;
}
0 голосов
/ 25 октября 2010

Если B находится на панели вкладок с A, это не будет работать. Вам нужно представить B модально или вставить его в навигационный контроллер - и вам также нужно вернуть YES хотя бы для одной ориентации в B.

Контроллеры панели вкладок поддерживают только те ориентации, которые поддерживаются ВСЕМИ их представлениями.

...