2009-07-27 5 views
4

페이징 된 scrollview가 있습니다. 각 페이지에는 단추 그리드를 관리하는 viewcontroller (buttonViewController)가 있습니다. 단추 중 하나를 누르면 buttonViewController가 다른 viewcontroller (detailViewController)를 모달로 표시합니다.ModalViewController를 닫은 후 UIScrollView의 내용이 이동되었습니다.

문제는 모달보기 컨트롤러를 닫을 때 표시되는 buttonViewController가 약 20 픽셀 정도 씩 아래로 이동한다는 것입니다. 이상한 것은 보이는 페이지 만 이동한다는 것입니다. 이미로드 된 다른 페이지로 스크롤하면 여전히 올바른 위치에 있습니다.

내 질문은 그러나, 그 질문에 대한 허용 대답이 상태 표시 줄이 숨겨져 있다고 가정 기본적으로 dismissing modalViewController moves main view buttons around iphone

과 동일합니다. 내 응용 프로그램에서 상태 표시 줄을 숨기고 있지 않습니다.

다른 아이디어?

추가 참고 : 이동은 처음으로 모달 뷰 컨트롤러를 시작할 때만 발생합니다. 모달 뷰 컨트롤러를 열고 닫으면 모든 것이 그대로 유지됩니다.

하나 더 참고 : 나는 모달 뷰 컨트롤러를 해제 한 후

CGRect frame = self.view.frame; 
frame.origin.y=0; 
self.view.frame = frame; 

이, 나는이 문제를 해결할 수 : 나는 다음과 같은 코드를 추가합니다. 프레임이 y에서 20 픽셀 씩 움직이는 것 같습니다. 나는 아직도 그 움직임의 원인을 알지 못한다.

+0

상태 표시 줄과 겹치지 않도록 표시하려면 20 픽셀 이하의 모든 하위보기를 추가해야한다는 것을 알고 있습니까? – Daniel

+0

아니요, 저는 scrollview의 프레임과 동일하게 설정했습니다. 투명 상태 표시 줄을 사용하고 있으므로 겹치지 않아도됩니다. –

답변

0

이가에 관련이 밝혀 : 내 viewcontrollers의 일부의 높이를 일치하지 않는했다 ModalViewController doesn't display during animation when paged scrollView is scrolled

, 그 모든 것을을 던지고.

일부보기의 높이는 460 픽셀이고 일부는 480 픽셀입니다. 웬일인지, 이것에 의해 20pixels 씩 이동하여 모달 뷰 컨트롤러가 사라졌습니다. 모든 것을 460pixels로 만들면 모든 것이 훌륭하게 작동했습니다.

1

글쎄,이 문제가 있었는데 그것은 내 첫 번째 viewController (UIWindow에서) 설정 한 방식으로 인해, 그것은 전에 결코 일어난 적이 없었기 때문에 매우 이상합니다. 내가 관찰 한 동작은 보통 상태가 아닌 상태 막대와 겹칠 지점 (0,0)에 하위보기를 추가하십시오. 일반적으로보기는 상태 막대를 알고 적절히 동작합니다. 부작용으로, 상태 표시 줄을 벗어나는 모달보기를 푸시 할 때, 닫은 후 나는 당신이보고있는 것과 같은 문제를 보았습니다. 내가 수정 한 것은 펜촉의 UI 뷰를 내 컨트롤러 뷰로 설정하는 것이 었습니다.이 모든 것이 수정 된 것처럼 보였습니다. CGRectMake (0,0,320,460)를 사용하여 프로그래밍 방식으로 윈도우에 간단하게 추가하는 것이 이상한 행동을하는 이유를 다시 한 번 알았습니다. 이전의 모든 프로젝트에서이를 수행하고 올바른 동작을 보았 기 때문입니다. 그러나 펜촉에 넣었을 때 예상대로 작동했습니다. 어쩌면 이것도 당신 문제입니다.

+0

나는 완전히 이해할 지 모르겠다. UIWindow는 뷰 속성을 가지고 있지 않습니다. UIWindow *가 뷰였습니다. 지금 내보기를 창에 추가합니다. \t [window addSubview : scrollViewController.view]; –

+0

또한 모달 뷰 컨트롤러는 상태 표시 줄을 숨기지 않습니다. –

+0

제 경우에는 모달 뷰가 상태 표시 줄을 감추고있었습니다 (하지만 문제를 푸는 것이 아니라, 모달 뷰가 푸시되었음을 의미하지는 않습니다).하지만 펜촉을 통해 무엇을했는지 보려면 XCode로 이동하여 새 프로젝트를 선택하고 뷰 기반 (보기가있는 컨트롤러를 생성합니다)을 선택하고, MainWindow 펜촉을 보면, 무슨 뜻인지 알 수 있습니다. – Daniel

관련 문제