2010-04-12 2 views
1

기기 회전을 기반으로 앱에서 일부 인터페이스 변경을 구현하려고합니다.shouldAutorotateToInterfaceOrientation는 순환없이 여러 번 연속으로 호출되었습니다.

내 앱은보기 기반 앱입니다. 따라서 메인 뷰 컨트롤러에는 didload 메소드가 있습니다.

앱이 세로로 시작됩니다. 거의 모든 장치 방향을 변경하면 shouldAutorotateToInterfaceOrientation 메서드가 트리거되지만 장치가 세로 방향으로 놓여 졌을 때 가로 방향에서 나온 후에는이 메서드가 호출되지 않습니다. 나는 응용 프로그램을 실행하면

  • 이 shouldAutorotateToInterfaceOrientation는 6 회 호출됩니다

    응용 프로그램을 디버깅, 내 shouldAutorotateToInterfaceOrientation 방법에

    NSLog(@"orientation=%d", interfaceOrientation); 
    

    을 넣어 있지만, 그리고 내가 보는 것은 매우 이상하다 앱의 인터페이스가 나타나기도 전에 실행될 때마다 방향에 대해 다른 번호가 표시됩니다. 즉, 콘솔에서보고하는 순서는 세로, 세로, 세로, 가로 오른쪽, 가로 왼쪽, 거꾸로)입니다.

이 기간 동안 앱이 시작되었습니다. 디버거는 앱의 델리게이트에서 온 6 개의 모든 호출을보고합니다.

그래서, 여기에 질문을 제공 : 장치가 초상화에 들어갈 때 shouldAutorotateToInterfaceOrientation 호출되지 않는 이유를

  1. ?
  2. 응용 프로그램이 표시되기 전에이 메서드를 호출하는 대리자가 6 번 나타나는 이유는 무엇입니까? 특히 회전이 수행되지 않는 경우?

감사합니다.

답변

3

UIViewController Class Reference이 메서드는 "보기 컨트롤러가 지정된 방향을 지원하는지 여부를 나타내는"값을 반환한다고 가정합니다.

기기가 현재 회전하고 있지 않다는 약속을하지 않고 컨트롤러가 지원할 수있는 방향을 쿼리하고 있습니다. 따라서 성명 :

귀하의보기 컨트롤러는 주어진 방향을 지원할 수 있거나 그렇지 않습니다.

2

시스템이 응답을 캐싱하여 시도하고 감지 할 방향을 알고 있습니다.

관련 문제