2013-08-12 4 views
9

내 rootViewController는 UITabbarController이고 UINavigationController 초입니다.상태 막대가 회전하고 보는 이유는 세로로 유지됩니다.

회전을 제한하기 위해 iOS6은 모든 뷰가 아닌 일부 뷰에서 최상위 뷰 또는 보이는 뷰의 shouldAutorotate 응답을 존중하도록이 두 컨트롤러를 서브 클래 싱했습니다.

이 모든 것이 완벽하게 작동합니다 ... 대부분의 경우.

회전을 허용하지 않는보기 (UITableviewController)에서 시작하는 경우가 있습니다.

자동 회전을 허용하고 가로로 회전 한 다음 세로로 돌아가는보기를 누릅니다.

내가보기를 팝 때, 모두 잘 나타납니다.

하지만 이제 장치를 회전하면 상태 표시 줄 만 회전하고 상단에 빈 공간이 남고 현재보기의 왼쪽 부분을 덮습니다. 현재보기가 회전하지 않습니다 (그렇지 않아야 함). 상태 표시 줄 만 앞뒤로 회전합니다. 보기는 응답 성이 뛰어나고 접촉을 받고 정상적으로 작동하고 크기를 조정하거나 회전에 응답하지 않습니다 (그렇지 않아야 함).

이 동작은 응용 프로그램을 종료하고 다시 시작할 때까지 계속됩니다. 일단 그것이 발생하면 나는 그것을 멈추게하는 다른 방법을 찾지 못했습니다. 다시 시작할 때 모든 것이 올바르게 다시 작동하며 불확실한 기간 동안 제대로 작동합니다. 나는 거기에 앉아서 터벅 터벅 걷고, 내 마음의 내용을 이리저리 앞뒤로 돌릴 수있다.

나는 이것을 시뮬레이터에서 결코 재현 할 수 없었다.

뚜렷한 이유없이 발생합니다. 나는 그렇게 할 수 없습니다. 85 %의 시간이 제대로 작동한다고 말하고 싶습니다. 나는 며칠 또는 몇 주 동안 발생하지 않았을 때 여러 번 고쳐 졌다고 생각했습니다. 그런 다음 파란색에서 다시 발생합니다.

이 동작을 설명하는 포럼에서는 게시물을 찾을 수 없으므로 디버깅을 시작할 위치조차 찾지 못했습니다. 어떻게 상태 표시 줄이 위에서 아래로 스윙 할 수 있고 뷰는 어떤 방식으로도 크기를 조정하거나 회전하거나 응답하지 않습니다. 그 일이 일어날 수있는 방법을 알고 있다면 시작할 수있는 곳이 있습니다.

+0

문제는 시뮬레이터에서 설정할 수없는 장치 방향 (FaceUp, faceDown 및 알 수없는 방향) 때문입니다. 그러나 장치에서이 방향을 얻을 수 있습니다. 장치 방향을 인쇄 한 다음 디버그를 시도 할 수 있습니다. – Bharath

답변

6

하위 클래스 UIWindow (내 경우에는 상태 표시 줄 오버레이)을 추가 할 때 동일한 문제가 발생했습니다.

이 새로운 UIWindowrootViewController을 서브 클래스 UIViewController (-(BOOL)shouldAutorotate 구현)으로 설정하는 것이 솔루션입니다. 이로 인해 상태 막대가 예상치 않게 회전 할 수 없습니다.

+0

어떤 식 으로든 상태 표시 줄을 변경하지 않으므로이 내용이 적용되지 않는다고 생각합니다. iOS7 용으로 업데이트되었으므로 아직이 문제를 경험하지 못했습니다. 행운을 빌어, iOS6의 일부 예외 였고 나는 "고정 된"것으로 기록 할 수 있습니다. –

+0

룩백 라이브러리를 사용할 때이 문제가 발생했습니다. 추가 UIWindow를 UIApplication 클래스에 추가합니다. 나는'UIViewController' 서브 클래스를 구현하고'shouldAutorotate'를 오버라이드 (override)합니다. 매력처럼 작동합니다. – Loozie