2010-05-12 8 views
1
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

내 코드는 장치가 회전 중일 때이 이벤트를 두 번 이상 가져옵니다. 나는 Apple docs에서 참고를 찾고 있지만 운이 좋은 것 같지 않습니다. 아무도 이것이 왜 일어나고 있는지 힌트를 줄 수 있습니까?shouldAutorotateToInterfaceOrientation은 항상 두 번 이상 호출됩니다.

내 코드는 일부 로그를 제외하고는 변경하지 않고 Apple doc 샘플 코드 (AlternateViews)입니다.

답변

3

저는 iPhone 개발자에게 새로운데, 그것이 여러 번 호출되는 이유는 shouldAutorotateToInterfaceOrientation은 이벤트가 아니라고 생각합니다. 단순히 자동 회전이 지원되는지 여부에 따라 UIInterfaceOrientation을 가져오고 YES 또는 NO을 반환하기 만하면됩니다.

Apple docsUIInterfaceOrientation이 정의되어 있음을 보여 같은 :

typedef enum { 
    UIInterfaceOrientationPortrait   = UIDeviceOrientationPortrait, 
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, 
    UIInterfaceOrientationLandscapeLeft  = UIDeviceOrientationLandscapeRight, 
    UIInterfaceOrientationLandscapeRight  = UIDeviceOrientationLandscapeLeft 
} UIInterfaceOrientation; 

그래서 모든 당신이있어 하나 위의 이상 interfaceOrientation을 확인 뭔가, 그리고 여부 말한다와 그 메소드를 오버라이드 (override)하기로 뷰가 자동으로 회전해야합니다.

+0

도움 주셔서 감사합니다. Apple 코드에서 내 코드를 다운로드 했으므로 방향 검사가 이미 수행되었습니다. 왜이 방법이 같은 방향으로 한 번 이상 호출되는지 궁금합니다. 나는 이것이 "이벤트가 아닙니다"라고 말하지 않습니다. 이것에 대해 나에게 말해 줄 수 있니? 감사합니다. – user268743

+0

@lovecactus 이벤트는 버튼 누름과 같은 동작입니다. 이것은 일련의 다른 UI 작업을 시작하기위한 것입니다. 'shouldAutorotateToInterfaceOrientation'은 일련의 액션을 의미하지는 않지만 뷰가 자동으로 회전해야하는지 여부를 반환하기위한 것입니다. 사실이 방법은 부작용이 없어야합니다. 대비가 보이십니까? – avpx

+0

와우! 감사합니다. UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft –

4

방향으로 NO를 반환하면 YES를 반환 할 때까지 계속 시도합니다. 예를 들어 가로 방향으로 NO를 반환하면 가로 방향으로 시도 할 수 있습니다. 모든 것에 대해 NO를 반환하면 회전하지 않습니다. 그리고이 메서드는 임의의 시간에 호출 될 수 있습니다. 회전이 발생할 때 엄격하게 호출되는 것은 아닙니다. 예를 들어, 새로운 뷰가 네비게이션 컨트롤러에 팝되면, 회전이 발생하지 않았더라도 새로운 뷰가 질의됩니다.

+0

당신의 도움에 감사드립니다. 그러나이 방법에서는 방향을 기록했습니다. 회전이 트리거 될 때이 메서드는 같은 방향으로 호출됩니다. 이것은 당신의 대답과 조금 다른 것처럼 보이거나 오해 한 것입니까? – user268743

+0

"이 메서드는 임의의 시간에 호출 될 수 있습니다." 시스템은 응답을 저장할 것이라고 문서화하지 않으므로 단일 회전에서 단일보기 컨트롤러에서 두 번 이상 호출 될 수 있습니다. – drawnonward

관련 문제