2010-03-18 8 views
0

UIView의 유일한 하위 뷰인 사용자 지정 UIViewController가 있습니다. UIViewController에는 대리자 함수가 포함되어 있습니다.사용자 지정 UIViewController가 장치 회전에 응답하지 않습니다.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

이 함수는 응용 프로그램이 시작될 때 한 번 호출되며 장치를 회전 할 때 다시 호출되지 않습니다. 또한 willRotateToInterfaceOrientation 함수가 호출되지 않는다는 것을 알았습니다. UIViewController의 모든 내용을 거의 주석 처리했지만 여전히 장치 회전에 응답하지 않습니다.

+0

당신이 묻는 것을 얻을 수 있지만 편집기에서'-'가 글 머리 기호라고 생각하지 않도록 코드를 4 칸 들여 써야합니다. –

+0

"UIWindow의 하위보기 만?" 일반적으로 뷰 컨트롤러는 한 번에 전체 화면을 처리하며 UIView 하위 클래스는 하위 뷰 관련 작업을 처리합니다. –

답변

2

새로운 UIViewController를 만들기 위해 스트레치에서 시작하여 내 자신의 문제를 해결하고 장치 회전에 응답했는지 확인했습니다. 나는 조각별로 코드를 가져 와서 회전을 확인했다. 결국 근본 원인을 발견했습니다. 내 사용자의 UIViewController에서, 나는 그것을 발견했다 excpet 내가 init 함수를 호출하지 않은 경우에도이 장치에서 순환 게재에 응답하지 않았다

- (id)initWithFrame:(CGRect)theframe { 
    if (self.view = [super.view initWithFrame:theframe]) 

했다. 해결책은 간단합니다. initWithFrame 함수에 [self init]을 추가하십시오. 응답 해 주셔서 감사합니다.

0

부모 UIView의 컨트롤러에 해당 메서드를 구현해야 할 수도 있습니다. 뷰가 다른 뷰에 포함되어있는 것처럼 보입니다.

+0

감사합니다. 그렇지 않다. –

1

코드가 올바르게 표시됩니다. 나는 그것이 귀하의 .xib 파일 ("File 's Owner"에 대한 잘못된 객체 유형과 같은 것)에있는 것으로 의심합니다. 따라서보기 컨트롤러 하위 클래스가 전혀 인스턴스화되지 않도록합니다. 일부 로그를 viewDidLoad에 넣고 전화가 걸렸는지 확인하십시오.

+0

당신의 대답은 정말 가깝습니다. 일반적으로 UIViewController가 올바르게 인스턴스화되지 않았다는 것을 알기는 쉽지 않습니다. 아무 것도 작동하지 않기 때문입니다. 내 경우는 좀 더 까다 롭습니다. 제 질문에 대한 제 대답을보십시오. –

1

회전 문제 만 테스트하는 테스트 앱을 사용해보세요. 이렇게하면 문제를 격리하는 데 도움이됩니다.

+0

나는 당신의 접근 방식을 취하고 문제를 격리했습니다. 감사. –

관련 문제