2009-09-28 6 views

답변

5

JoePasq의 대답에 따라, 나는 이것을 위해 KVO를 사용하고 각 UIScrollView에서 모방하고자하는 키/값 쌍에 대해 관찰자를 등록합니다.

// Do this during initialisation of scrollView2 
[scrollView1 addObserver:self 
       forKeyPath:@"contentOffset" 
       options:NSKeyValueObservingOptionNew 
       context:NULL]; 

[scrollView1 addObserver:self 
       forKeyPath:@"zoomScale" 
       options:NSKeyValueObservingOptionNew 
       context:NULL]; 

// Implement this method on scrollView2 
- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context { 

    [self setValue:[change valueForKey:NSKeyValueChangeNewKey] forKey:keyPath]; 
} 
+0

감사합니다. Nathan. 나는 이것을 시도 할 것이다. 건배. – dugla

+0

매우 근사합니다. KVO/KVC없이 코드를 어떻게 작성 했습니까? 다시 한번 감사드립니다. – dugla

+0

아마도 나는 다른 사람들에게 명백한 것을 놓치고 있는데, 어떻게이 두 가지 방식으로 작동 할 수 있습니까? "마스터 및 슬레이브"시나리오에서 작동하지만 두 스크롤보기가 서로 흉내 내면 무한 루프가 발생합니다. 도움? –

0

키 값 코딩, 당신은 맥 OS X 용 코코아 프로그래밍을 선택하고,

스티븐 kochan (맞춤법 & 구두점?)에 의해 목적-C를 배우는 것을 모르는 경우

문서를 검사하여 스크롤보기의 위치를 ​​얻는 방법 (예 : 표보기 색인)을 확인한 다음 KVC를 설정합니다. 그러면 iPod이 종료 된 후에도 iPod이 스크롤 위치를 유지하는 방법을 이해할 수 있습니다.

+0

예, 저는 KVO/KVC를 알고 있고 사용하고 있습니다. 내 질문은 이동/확대/축소 중에 관찰 할 내용과 트윈 scrollViews에 전달할 상태 정보입니다. 감사. – dugla

2

내가 가장 좋은 방법은 귀하의 컨트롤러에 각 scrollview의 대리인을 설정 한 다음 '- (void) scrollViewDidScroll : (UIScrollView *) scrollView'컨트롤러에서 호출하려는 메서드 내부 구현하는 것이라고 생각합니다. 'setContentOffset : animated :'올바른 contentOffset을 얻기 위해 스크롤하지 않은 scrollview에 스크롤 된 UIScrollView의 content 속성을 사용할 수 있습니다. - (void) scrollViewDidScroll : (UIScrollView *) scrollView 컨트롤러에서

+0

안녕하세요. JonC, 감사합니다. 그것은 패닝을 처리합니다. 그래도 나는 줌에 관한 약간의 퍼즐인가? 또는 UIScrollView가 콘텐츠 오프셋의 줌을 내부적으로 계산합니까? 건배, 더그 – dugla

0

플릭 동작에 대해서도 작동하나요? 플릭 제스처 감속 완료 후 내 경험에서

는 contentOffset 너무도 KVO와 여전히

내가 맞다 오래된 contentOffsets

을 관찰합니다 .. 업데이트됩니까?

0

아마도 나는 다른 사람들에게 명백한 것을 놓치고 있습니다. 그러나 어떻게이 두 가지 방법으로 작동 할 수 있습니까? "마스터 및 슬레이브"시나리오에서 작동하지만 두 스크롤보기가 서로 흉내 내면 무한 루프가 발생합니다. 도움? - 1시 8분

5 월 4 '11 외국인 차분한를 끌고있는 마지막보기를 추적하고있는 "scrollViewWillBeginDragging :"당신은 이전 관찰자를 제거 할 수 있습니다 (있는 경우) 및 뷰의 존재에 대한 새로운 것을 추가 끌었다.

나는 그것을 성공적으로 할 수 있었다.

관련 문제