我希望在并行工作的屏幕上有一对scrollview - 称为scrollA和scrollB。当用户滚动/缩放scrollA时,scrollB模仿该行为,缩放和平移相同。反之亦然。
这可能吗?提前谢谢。
干杯, 道格
答案 0 :(得分: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];
}
答案 1 :(得分:2)
我认为最好的方法是将每个scrollview的委托设置为你的控制器然后在控制器中实现' - (void)scrollViewDidScroll:(UIScrollView *)scrollView',在你想要调用的方法中setContentOffset:animated:'在滚动视图上没有滚动,为了获得正确的contentOffset,你可以使用滚动的UIScrollView的UIScrollView.contentOffset属性,该属性将被传递给你的实现 - (void)scrollViewDidScroll:(UIScrollView * )你的控制器中的scrollView
答案 2 :(得分:0)
键值编码,如果您不知道然后为Mac OS X选择Cocoa编程,并通过stephen kochan(拼写和标点符号)学习Objective-C
检查文档以获取滚动视图的位置(如tableview的索引),然后设置KVC。那么你就会明白iPod在退出后如何保持你的滚动位置。
答案 3 :(得分:0)
这也适用于轻弹手势吗?
根据我的经验,在完成轻弹手势减速后,contentOffset会更新..所以即使使用KVO,它仍然会观察旧的contentOffsets
我是对的吗?答案 4 :(得分:0)
也许我错过了其他人明显的东西,但这怎么可能两种方式都有效?它适用于主人和奴隶"场景,但如果两个滚动视图彼此模仿,它会以无限循环结束。救命? - Sedate Alien 5月4日&11; 11:08
跟踪被拖动的最后一个视图,并在" scrollViewWillBeginDragging:"您可以删除以前的观察者(如果有)并为要拖动的视图添加新的观察者。
我能够成功地做到这一点。