2011-02-24 2 views
1

UIViewController가 창에 추가되었으며 Info.plist 파일에서 Portrait 및 LandscapeLeft 방향을 지원하도록 응용 프로그램이 구성되었습니다.shouldAutorotateToInterfaceOrientation이 모든 예상 된 방향 모드에 대해 호출되지 않았습니다.

왼쪽 가로로 기기를 들고 있고 내보기로드가 끝난 후 'shouldAutorotateToInterfaceOrientation'이 두 번 보입니다. 그러나 메서드가 호출 될 때마다 'toInterfaceOrientation'값은 항상 'UIInterfaceOrientationPortrait'입니다.

내가 Portrait를 한 통화하고 'UIInterfaceOrientationLandscapeLeft'을 다른 것으로 적어도 예상하고 있었기 때문에 현재 그 장치를 보유하고 있습니다.

컨트롤러의보기 xib는 세로보기 모드로 구성되어보기를로드하지만 Portrait 이외의 다른 방향이 지원되는지 묻는 메시지가 표시됩니다.

두 가지 다른 방향 모드가 'shouldAutorotateToInterfaceOrientation'으로 전달되지 않는 이유는 무엇입니까?

답변

3

보기 컨트롤러가 다른보기 컨트롤러 안에 있습니까?

오리엔테이션 변경은 응답 체인의 첫 번째 VC에만 적용되고 메시지 전파는 보장되지 않습니다.

2

이것은 뷰 컨트롤러를 유지하지 못하는 경우에도 발생할 수 있습니다. 앱 대리인이 자동 참조 횟수에 따라 다음

UIViewController* vc = [[UIViewController alloc]init]; 
[self.window addSubview: vc.view]; 

이있는 경우 그래서, VC는 위의 코드가 실행 직후에 해제됩니다. 따라서 자동 실행이 수행되지 않습니다. 이 문제를 해결하려면 vc를 강한 ivar에 할당하십시오.

+0

정말 고마워요! 나는이 하나에 완전히 난처하게되었다 :) –

관련 문제