2011-08-07 5 views
1

"Window-based Application"템플릿을 사용하여 매우 기본적인 iPad 응용 프로그램을 만들었습니다. 불행히도 제공된 뷰는 시뮬레이터를 회전해도 회전하지 않습니다.기본 창 프로그램의 화면 회전이 작동하지 않습니다.

또한 뷰 컨트롤러 및/또는 UINavigationController를 기본 창에 추가 할 때도 회전하지 않습니다. 구현했습니다. 추가 한보기 컨트롤러에서

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 
을 구현했지만 계속 회전 할 수 없습니다.

내가 누락 된 항목이 있습니까?

+0

모든 회전이 지원된다는 것을 목표로 설정했는지 기억 했습니까? – msgambel

+0

기기가 회전 잠김 상태입니까? – Raptor

+2

'shouldAutorotateToInterfaceOrientation :'을보기 컨트롤러가 아니라보기로 구현했다는 것을 의미합니까? – cduhn

답변

1

자동 회전을 조율하기 위해 응용 프로그램의 윈도우는보기 컨트롤러가 관리하는 최상위 하위보기를 찾습니다. 창은이 뷰 컨트롤러에서 shouldAutorotateToInterfaceOrientation:을 호출하고, 지시 된대로 뷰 컨트롤러의 뷰를 변환합니다.

이 이유 때문에 창 기반 응용 프로그램이 자동으로 out-of-the-box를 실행하지 않습니다. 기본 템플릿에는보기 컨트롤러가 이미 설정되어 있지 않습니다. 자동 회전을 이용하려면 사용자 정의 UIViewController 하위 클래스를 만들고 해당 shouldAutorotateToInterfaceOrientation: 메서드를 적절하게 편집 한 다음 해당 뷰 컨트롤러 뷰를 윈도우의 직접 하위 뷰로 추가해야합니다 (또는 뷰 컨트롤러를 UINavigationController과 같은 컨테이너에 추가하고 컨테이너 뷰 콘트롤러의 뷰는 윈도우의 서브 뷰로서). 일반적으로 application:didFinishLaunchingWithOptions:에서 이루어집니다.

사용자가 "뷰 컨트롤러 및/또는 UINavigationController를 기본 창에 추가 할 때도 회전하지 않으며"shouldAutorotateToInterfaceOrientation:을 구현했으며 여전히 회전하지 않는다고 말합니다. 모든 것을 올바르게 구성한 경우 작동합니다. 이 과정에서 약간의 실수가 있었을 지 모르지만 프로젝트를 보지 않고서는 무엇인지 확실하게 말할 수는 없습니다. 여기에 몇 가지 확인할 수 있습니다

당신이 NIB에서 사용자 정의보기 컨트롤러를 정의한 경우
  1. , 수 있도록 당신이 IB의 신원 경위에 자사의 클래스 이름을 변경하려면 기억해야합니다.

  2. 보기 컨트롤러의보기를 창에 직접 추가했는지 확인하고 창과보기 컨트롤러보기 사이에 래퍼 역할을하는 다른보기가 없는지 확인하십시오.

  3. IB의 Window 개체에 하위보기를 추가하지 않으십시오. 하위 뷰를 application:didFinishLaunchingWithOptions:에 추가해야합니다.

  4. NIB에서 사용자 지정보기 컨트롤러를 정의한 경우 해당보기가 IB의보기 컨트롤러 아래에 중첩되어 표시되는지 확인하십시오. 즉,보기 컨트롤러의 view 콘센트에 다른보기를 연결하지 마십시오.

어둠 속에서 약간의 발사입니다. 이 답변에있는 뭔가가 실수를 찾는 데 도움이되기를 바랍니다. 그렇지 않은 경우에는보기 기반 응용 프로그램을 만들고 기본 구성을 Windows 기반 응용 프로그램과 비교해보십시오. 어쩌면 당신의 실수가 당신에게 뛰어 들게 될 것입니다.

+0

제안에 감사드립니다 ... 불행히도, 그것은 나를 위해 작동하지 않습니다. 내가 취하고있는 단계를 검토하려면 (1) iPad 용 창 기반 애플리케이션 만들기 (2) shouldAutorotateToInterfaceOrientation : (3) didFinishLaunchingWithOptions를 2 행으로 업데이트하여 매우 간단한 클래스 UIViewController를 만듭니다. RotateMe * rotateMe = [[RotateMe 새로운] autorelease]; 및 [self.window addSubview : rotateMe.view]; 새 뷰가 표시되지만 여전히 회전하지 않습니다. 나는 'View'기반 프로젝트를 살펴볼 것입니다. –

+0

RotateMe.xib의 RotateMe에 대한 뷰 계층 구조를 구축하고 있습니다. – cduhn

+0

대기 ...'rotateMe'를 지역 변수로 선언하고있는 것처럼 보입니다. 범위를 벗어나면 자동 완성됩니다. 뷰는 윈도우의 서브 뷰로 유지되지만 컨트롤러는 회전하려고 할 때 해제됩니다. rotateMe는 앱 대리인의 속성으로 유지해야합니다. – cduhn

관련 문제