2012-03-15 3 views
0

이 아닙니다.이 문제로 하루 (그리고 많은 수의 많은 Google 및 StackOverflow 검색)에서이 문제로 대치 한 후 드디어 발견했습니다. 문제는 아니지만 어디서나이 솔루션을 보지 못했습니다.루트 UIViewController는 방향 변경에 응답하지만 두 번째 UIViewController는

루트 컨트롤러로 소유 한 UINavigationController와 루트 컨트롤러에서 소유 한 두 개의 UIViewController가있는 앱이 있습니다. 모든 것은 프로그래밍 방식으로 만들어졌으며 Interface Builder를 전혀 사용하지 않습니다. 두 UIViewController는 모든 방향 (일반적으로)에서 회전을 처리하도록 설정되지만 루트 UIViewController 만 올바르게 회전합니다. 두 번째 UIViewController에 대해 shouldAutoRotateToInterfaceOrientation은 한 번 실행되지만 결코 다시 발생하지 않으며 willRotateToInterfaceOrientation은 전혀 실행되지 않습니다.

문제가있는보기 컨트롤러에는 하위보기에 대한 표준 컨트롤 인 UILabel, UITextView 및 UISwitch 만 있습니다. tabBar 또는 다른 뷰 컨트롤러를 subView로 포함하지 않습니다. 뷰와 VC는 모두 범위에 있고 그렇지 않으면 건강한 것처럼 보입니다. 보기를 사용한 모든 상호 작용은 회전을 제외하고는 올바르게 작동합니다.

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications 

및 구현 :

내가 특별히 전화 드렸습니다 차이를하지 않은 didRotate 방법과 함께

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 

.

답변

0

내 부분에 바보 같은 일이었다 발견 된 문제에 적용 할 필요가 가능할 수 : 나는 alloc를 호출했습니다 보기 컨트롤러 인스턴스에 init없이 (편집에서 길을 잃었 어, 내 방어). 놀랍게도 그것은 뷰가 다른 모든면에서 올바르게 기능했기 때문입니다. 나는이 Apple Technical Q & A : http://developer.apple.com/library/ios/#qa/qa1688/_index.html을 읽었지만 내가보고있는 문제와 관련이 없었다. 키 라인은 마지막 문장입니다 : 객체를 제대로 초기화하려면,보기 컨트롤러에 대해 재정의하는 init 또는 initWithNibName 메소드에서 super를 호출해야합니다. init은 결코 전혀 호출되지 않았으므로 물론 [super init]도 발생하지 않았습니다.

0

수동으로 뷰를 추가하는 경우에서 iOS 5에서, 아주 잘 당신이 방법을 addChildViewController:

+0

고마워요! 나는 iOS 5에서이 문제를 인식하지 못했지만, 실제로는 iOS 4.2를 대상으로했습니다. – strings42

관련 문제