2012-11-01 1 views
0

내가이 글에서 반대 문제가있을 것 같다 아이폰 OS에서 이상한 동작을 제공합니다 : 나는 애플에 내 유료 앱을 제출자동 회전은 아이폰 OS 6 작동하지만 5

Autorotate in iOS 6 has strange behaviour

는, 엑스 코드는 나에게로 업데이트했다 내 테스트 기기의 iOS 6 Xcode에서 GUI를 사용하여 내 앱이 iPhone의 세로 모드에만 표시되도록하고 iPad의 가로 모드에서만 표시하도록 설정했습니다. 이것은 iOS 6 iPhone 및 iPad에서 훌륭하게 작동합니다. 하지만 iOS 5에서는 iPad가 앱을 세로 방향으로 회전시키고 거기에 없어야하는 레터 박스 모양의 검은 색 영역에 버튼을 표시하고 반복적으로 충돌하는 것을 허용합니다.

내비게이션 컨트롤러 및 스토리 보드를 사용하고 있습니다.

내가 shouldAutorotateToInterfaceOrientation을 알고

는 아이폰 OS 6에서 더 이상 사용되지 않습니다,하지만 여전히에서 iOS 5에서 호출되어야 계산, 나는이 시도 :

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
     if ((UIDeviceOrientationIsLandscape(UIDeviceOrientationLandscapeLeft))||(UIDeviceOrientationIsLandscape(UIDeviceOrientationLandscapeRight))) { 
      return YES; 
     } 
     else return NO; 
    } 
    else 
    { 
     if ((UIDeviceOrientationIsLandscape(UIDeviceOrientationPortrait))||(UIDeviceOrientationIsLandscape(UIDeviceOrientationPortraitUpsideDown))) { 
      return YES; 
     } 
     else return NO; } 
    // Return YES for supported orientations 
} 

위의 코드는 아무것도하지 않은 것 같다. 내 각보기 컨트롤러에 넣고 있습니다. 실제로 내 네비게이션 컨트롤러에 넣어야 할 것 같지만, 그래픽으로 설정했기 때문에 그렇게하는 방법을 모르겠습니다. 내 탐색 컨트롤러를 서브 클래스 화하고 코드에서 모든 작업을 수행해야합니까? 이 작업에는 스토리 보드 설정을 사용하는 방법이 있어야합니다!

(참고 : 때문에 일부 이전 버전의 구성 요소의 난 그냥 일반 그것을 좋아하지 않아 내 소프트웨어를 포함하고 수 없습니다 분명히 내가 자동 레이아웃을 사용하지 오전.)이 원인이 될 수있는 어떤

? 너무 많은 사람들이 응용 프로그램을 구입하고 불평하기 전에 그것을 고치고 싶습니다! 미리 감사드립니다 ...

답변

2

나는 코드가 사용 곳, 같이해야한다고 생각 "interfaceOrientation"당신의 비교를 위해 메소드로 전달 매개 변수 :

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    if ((UIDeviceOrientationIsLandscape(interfaceOrientation))||(UIDeviceOrientationIsLandscape(interfaceOrientation))) { 
     return YES; 
    } 
    else return NO; 
} 
else 
{ 
    if ((UIDeviceOrientationIsLandscape(interfaceOrientation))||(UIDeviceOrientationIsLandscape(interfaceOrientation))) { 
     return YES; 
    } 
    else return NO; } 
+0

이 @Bek을 주셔서 감사합니다! 후반에는 풍경, 아니, 그렇다면 네, 그렇다고 생각합니다. 이상하게도, UIDeviceOrientationIsPortrait를 호출하려고하면 PortraitUpsideDown에서 작동하지 않는 것처럼 보이지만 IsLandscape를 사용하면 로직이 반대로 작동합니다. – Jeanne

+0

죄송합니다 - 방금 복사 한 내용을 복사했으며 논리를 뒤집어 쓰지 않았습니다. 다행 당신을 위해 일했다! 거꾸로 보면 UIDeviceOrientationIsPortrait와 같은 매크로 함수가없는 것 같습니다. 난 보통 : return interfaceOrientation! = UIDeviceOrientationPortraitUpsideDown 모든 매크로를하는 대신 거꾸로 된 것을 제외한 모든 회전을 허용합니다. – Bek