Обнаружить 180 флип на iPhone / iPad - PullRequest
2 голосов
/ 09 января 2011

В своем приложении для iPhone я настраиваю различные виды от портрета до пейзажа. Это прекрасно работает, если пользователь делает Портрет -> Пейзаж -> Портрет -> Пейзаж (как я делаю, немного переворачивая представления).

Однако, если пользователь переходит из Portait -> Portrait up to down, или Landscape Left -> Landscape Right, мой код не работает.

Могу ли я обнаружить 180 сальто и проигнорировать его? Я попробовал следующее:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if ((fromInterfaceOrientation == UIInterfaceOrientationPortrait) && 
        (UIDeviceOrientationIsPortrait(self.interfaceOrientation))
    {
    } 
    else if ((fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
             (fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight) && 
             (UIDeviceOrientationIsLandscape(self.interfaceOrientation)))
    {
    } 
    else 
    {
      // Do something - it didn't flip 180.
    }
}

1 Ответ

2 голосов
/ 09 января 2011

Вы должны иметь круглые скобки вокруг этой части вашей логики:

fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight

.. иначе ваша логика не получится так, как вы ожидаете. && имеет более высокий приоритет над ||.

...