2011-11-24 2 views
0

저는 앱 스토어에 좋은 앱이 있습니다. iOS 5가 출시 될 때까지 인생은 좋았습니다. 이제는 애플 리케이션에 몇 가지 문제가있다. 내가 해결할 방법이 없다. 무슨 일이 일어나고 있는지 전혀 모른다. 왜냐하면 나는 그들이 iOS 5 문제라고 생각하기 때문이다.iOS 5 문제 : 모달 무시 후 탐색 바가 잘립니다.

제가 놓친 iOS 5 변환 설명서가 있습니까? 또는 그들은 단지 재미로 모든 것을 바꿨으며 우리가 모든 부활절 달걀이 어디에 있는지 알아 내길 원했습니까? 여기

은 단순히 내가 4.2 '좋은 똑똑한에서 응용 프로그램을 실행하려는 말할 때 전혀 존재하지 않는 나는 (내가 너무 많은 시간을 해결하기 위해 노력을 낭비했다고) 경험하고 또 다른 문제입니다 :

모달보기

내 앱은 간단한 리더 앱입니다. UIWebView로 텍스트를 표시하는 책 읽기보기가 있습니다. 내가 작업해온 기능 중 하나는 읽는 동안 메모를 기록하는 기능입니다. 이것은 버튼을 누르고 모달보기를 제공함으로써 달성됩니다. 예, 모달보기입니다. 가능한 가장 간단한 프리 5입니다. 이제, 모달 뷰를 취소하고, 취소를 누르고, 뷰를 닫을 때, 독자 뷰로 돌아 가면 맨 위의 탐색 모음이 화면에서 절반 정도 위로 밀려납니다! 이것은 4.2에서 발생하지 않지만 iOS 5에 있습니다!

이 문제를 해결하려면 어떻게해야합니까?

도움 주셔서 감사합니다.

+0

이 질문의 일부이다 : http://stackoverflow.com/questions/8259601/ios-5-issues-disappearing-keyboard-when – Lizza

답변

2

좋아, 나는 방금 무슨 일이 있었는지 알아낼 수있었습니다. shouldAutorotateToInterfaceOrientation 값을 BOOL 변수로 설정하여 modalView가 돌아 왔을 때 상태 막대의 상태/크기를 알 수 없도록했습니다. 이 문제가 해결되어 문제가 사라졌습니다.

+0

그것은 어떠냐? 모든 shouldAutorotateToInterfaceOrientation에 대해 YES를 반환했습니다. –

1

나는 그것이 당신이 모달보기를 발표하고 기각하는 방식과 관련이 있다고 느낍니다. Apple은 새로운 방식을 제시했습니다. 이전의 논문 대신 논문을 사용하고 문제가 해결되는지 확인해보십시오.

변화를이 방법 :

presentModalViewController:animated: 

을에서 iOS 5에 도입 된 새로운 선호하는 방법으로 :

presentViewController:animated:completion: 

따라가 dismissModalViewControllerAnimated:를 사용하는 경우 그래서 여기

당신이 할 것입니다 보기를 닫은 후 dismissViewControllerAnimated:completion으로 변경하십시오.

또한이 방법에는 완료 처리기가있어보기가 표시/해제 된 후에 추가 작업을 수행하는 데 매우 유용합니다. 어쩌면 그것도 당신의 다른 문제에 도움이 될 것입니다. 도움이 될지 알려주세요.

+0

안녕하세요. 답변을 많이 주셔서 감사합니다. 나는 계속 진행하여 현재/해제 메소드를 업데이트했다. (블록으로는 nil로), 불행하게도 아무 것도 고치지 않았다. 블록을 운영해야합니까? 그 일을 내가 어떻게해야합니까? 감사! – Lizza

1

iOS 5의 주요 변경 사항은 UIViewController의 navigationController 속성이 모달보기에 더 이상 설정되어 있지 않다는 것입니다. 대신 새로운 (iOS 4에는 없슴) parentViewController 속성이 있습니다. 모달 뷰에서 navigationController를 사용하는 경우 그래서 당신은 같은 것으로 논리를 변경해야합니다. (즉, 메모리, 그래서 모든 t는 점이다 보장 할 수 없습니다 모든 내가 교차)

UIViewController* parent; 
if ([self respondsToSelector:@selector(parentViewController)]) { 
    parent = self.parentViewController; 
} 
else { 
    parent = self.navigationController; 
} 

+0

감사 핫 릭. 나는 그 변화에 대해 몰랐다. 나는 위의 코드를 사용해야하는 곳에서 약간 혼란 스럽다. [self presentView ...]를 호출하는 대신 코드를 삽입하고 [parent presentView ...]를 호출 하시겠습니까? 도움을 주셔서 감사합니다. 나는이 문제를 해결하는 것을 정말로 좋아할 것입니다. – Lizza

+0

아니요, 기본적으로 위에서 언급 한 "navigationController"를 참조하십시오. UIViewController의 "navigationController"속성을 사용하지 않으면 위의 내용이 적용되지 않습니다 (UI에 몇 가지 중요한 변경 사항이 있음). (변경 사항의 10 %를 확인하려면 [출시 노트] (https://developer.apple.com/library/iosre##releasenotes/General/RN-iOSSDK-5_0/_index.html)를 검토 할 필요가 있습니다. 애플은 실제로 문서화했다.) –

1

동일한 클리핑 문제가 발생했습니다.

CGSize size = CGSizeMake(320, 480); 
self.contentSizeForViewInPopover = size;
:

내 문제에 대한 이유는 내가 지금이 두 선이 문제를 해결하기 위해 같았다 제거 (뭔가 내 아이 패드 레이아웃 한) 모달 대화 상자 내에서 콘텐츠 크기를 설정하는 것이 것을 발견

문제가 해결되었다고 생각했지만 그렇지 않았습니다. 코드를 좀 더 살펴본 후 빌드를 청소하고 다시 테스트하면 shouldAutorotateToInterfaceOrientation으로 표시되어 앱이로드되는 동안 (루트 컨트롤러) 짧은 시간 (flag == NO) 동안 모든 방향에 대해 NO를 반환합니다. 당신은 이상과 같이 하나 개의 방향으로 YES 돌아가려면 :

여기
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return !self.flag ? UIInterfaceOrientationPortrait == toInterfaceOrientation : YES; 
}