2011-09-23 12 views
0

넓은 UIScrollView (wideScroll이라고 함)를 사용하고 작은 UIScrollViews (singleScrollViews)를 호출합니다. 그리고 두 개의 다른 UIImageViews를 포함하는 각 SingleScrollView에 UIView가 있습니다.UIScrollView가 maximumZoomScale에 도달하면 어떤 메소드가 호출됩니까?

wideScroll에 스크롤 위임자를 사용하고 singleScrollViews에 확대/축소 위임자를 사용해야합니다.

어떻게해야합니까? 저는 wideScroll 클래스에서 UIScrollView 대리자를 사용하고 확대/축소 이벤트가 발생하면 메서드에서 원하는 singleScrollView의 UIView 포인터를 반환합니다. 나는이 작업을 수행 할 때

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ 
    //here i determine "int someint" according to current page. 
    SingleScrollView *b = (SingleScrollView *)[wideScrollView viewWithTag:someint]; 
    return ((UIView *)[b viewWithTag:WRAPPERVIEW_TAG]); 
} 

는 개별 singleScrollViews의 줌은 한 가지를 제외하고 잘 작동 singleScrollView는 maximumZoomScale의 확대 끝을 도달 할 때, "scrollViewDidEndZooming"메소드가 호출하지만 전에, "scrollViewDidZoom"입니다 마지막으로 한 번 호출하고 UIView의 내용 오프셋을 (0,0)으로 설정하여 이미지를 왼쪽 상단으로 스크롤합니다.

반대로 최대 ZoomScale에 도달하지 않고 확대하면 UIView는 확대 된 위치를 유지하고 상단이나 다른 것으로 스크롤하지 않습니다.

또한 확대/축소 중에 maximumZoomScale에 도달하면 "- (UIView *) viewForZoomingInScrollView : (UIScrollView *) scrollView"메서드가 세 번 호출됩니다.

어떤 아이디어?

해결 방법 :maximumzoomscale을 2.01로 설정하고 singleScrollView.ZoomScale이 2.00 이상일 때 ScrollViewDidZoom delegeta 메서드 시작 부분에서 2.00으로 다시 설정합니다.

답변

0

photoscroller 샘플보기를 살펴보십시오. 그리고 각 단일 스크롤 뷰에 대해 viewForZooming을 개별적으로 구현해야합니다. 그것은 더 나은 구현 방법입니다. 그리고 layoutSubview 메서드를 오버라이드하고 스크롤 뷰 줌 눈금에 따라 이미지 뷰의 중심을 설정하십시오.

+0

PhotoScroller 예제에는 내 구조와 같은 구조가 없습니다. 스크롤 뷰 내부에서 뷰를 스크롤하고, 첫 번째 뷰는 가로로 스크롤하고, 작은 뷰는 줌 기능을 사용하므로 더 큰 스크롤 뷰에서 'viewForZooming'기능을 호출해야합니다. (나는 또한 당신이 말한 것을 시도했는데 스크롤 위임 메서드가 넓은 스크롤에서 사용되기 때문에 작동하지 않는다.) – typeiierror

관련 문제