나는 한 쌍의 scrollviews를 가지고 싶다 - 그것들을 scrollA와 scrollB라고 부른다 - 병렬로 작동하는 화면에서. 사용자가 scroll/zooms scrollA를 할 때 scrollB는 그 동작을 흉내 내고 동일하게 확대/축소 및 이동합니다. 그 반대.UIScrollViews와의 "동기화"와 동기화를 유지하는 올바른 방법은 무엇입니까?
이것이 가능합니까? 미리 감사드립니다.
건배, 더그
나는 한 쌍의 scrollviews를 가지고 싶다 - 그것들을 scrollA와 scrollB라고 부른다 - 병렬로 작동하는 화면에서. 사용자가 scroll/zooms scrollA를 할 때 scrollB는 그 동작을 흉내 내고 동일하게 확대/축소 및 이동합니다. 그 반대.UIScrollViews와의 "동기화"와 동기화를 유지하는 올바른 방법은 무엇입니까?
이것이 가능합니까? 미리 감사드립니다.
건배, 더그
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];
}
키 값 코딩, 당신은 맥 OS X 용 코코아 프로그래밍을 선택하고,
스티븐 kochan (맞춤법 & 구두점?)에 의해 목적-C를 배우는 것을 모르는 경우문서를 검사하여 스크롤보기의 위치를 얻는 방법 (예 : 표보기 색인)을 확인한 다음 KVC를 설정합니다. 그러면 iPod이 종료 된 후에도 iPod이 스크롤 위치를 유지하는 방법을 이해할 수 있습니다.
예, 저는 KVO/KVC를 알고 있고 사용하고 있습니다. 내 질문은 이동/확대/축소 중에 관찰 할 내용과 트윈 scrollViews에 전달할 상태 정보입니다. 감사. – dugla
내가 가장 좋은 방법은 귀하의 컨트롤러에 각 scrollview의 대리인을 설정 한 다음 '- (void) scrollViewDidScroll : (UIScrollView *) scrollView'컨트롤러에서 호출하려는 메서드 내부 구현하는 것이라고 생각합니다. 'setContentOffset : animated :'올바른 contentOffset을 얻기 위해 스크롤하지 않은 scrollview에 스크롤 된 UIScrollView의 content 속성을 사용할 수 있습니다. - (void) scrollViewDidScroll : (UIScrollView *) scrollView 컨트롤러에서
안녕하세요. JonC, 감사합니다. 그것은 패닝을 처리합니다. 그래도 나는 줌에 관한 약간의 퍼즐인가? 또는 UIScrollView가 콘텐츠 오프셋의 줌을 내부적으로 계산합니까? 건배, 더그 – dugla
플릭 동작에 대해서도 작동하나요? 플릭 제스처 감속 완료 후 내 경험에서
는 contentOffset 너무도 KVO와 여전히
내가 맞다 오래된 contentOffsets
을 관찰합니다 .. 업데이트됩니까?아마도 나는 다른 사람들에게 명백한 것을 놓치고 있습니다. 그러나 어떻게이 두 가지 방법으로 작동 할 수 있습니까? "마스터 및 슬레이브"시나리오에서 작동하지만 두 스크롤보기가 서로 흉내 내면 무한 루프가 발생합니다. 도움? - 1시 8분
5 월 4 '11 외국인 차분한를 끌고있는 마지막보기를 추적하고있는 "scrollViewWillBeginDragging :"당신은 이전 관찰자를 제거 할 수 있습니다 (있는 경우) 및 뷰의 존재에 대한 새로운 것을 추가 끌었다.
나는 그것을 성공적으로 할 수 있었다.
감사합니다. Nathan. 나는 이것을 시도 할 것이다. 건배. – dugla
매우 근사합니다. KVO/KVC없이 코드를 어떻게 작성 했습니까? 다시 한번 감사드립니다. – dugla
아마도 나는 다른 사람들에게 명백한 것을 놓치고 있는데, 어떻게이 두 가지 방식으로 작동 할 수 있습니까? "마스터 및 슬레이브"시나리오에서 작동하지만 두 스크롤보기가 서로 흉내 내면 무한 루프가 발생합니다. 도움? –