我正在处理它的应用程序我必须同时使用两个滚动视图同步。这意味着如果我同时滚动一个滚动视图,则另一个滚动视图必须滚动它。
如果可以,那怎么办呢?
答案 0 :(得分:10)
在包含两个滚动视图的视图控制器中实现UIScrollViewDelegate协议。在:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
委托方法,获取内容偏移量:
CGPoint offset = [scrollViewA contentOffset]; // or scrollViewB
然后用另一个控件设置:
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
您可以通过在上面的委托方法中进行比较来确定要更改的那个:
if( scrollView == scrollViewA ) // change offset of B
else // change offset of A
答案 1 :(得分:3)
不必阅读
一般情况下(至少从我所知道的),彼此有2 UIScrollView
/ UITableVIew
是不好的“风格”,因为它会导致UI很难与之交互。但我想如果你有足够的使用/理由这样做,那么我会告诉你一种方法来完成它。
<强> CODE!强>
如果是我,那么我只需覆盖UIScrollView
的{{1}}方法,然后滚动另一个touchesMoved
。
在scrollView_1内
UIScrollView
希望这有帮助
答案 2 :(得分:0)
if(scrollView == scrollViewA)//改变B的偏移量 否则//改变A的偏移量
答案 3 :(得分:-1)
理解这段代码;可能对你有帮助。
(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardshow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardhide:) name:UIKeyboardDidHideNotification object:nil];
myscrollview.contentSize=CGSizeMake(560, 420);
showkeyboard=NO;
}
(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter]
removeObserver:self];
}
(void) keyboardshow : (NSNotification *) notification
{
if (showkeyboard)
{
return;
}
NSDictionary *info=[notification userInfo];
NSValue *avalue=[info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize = [avalue CGRectValue].size;
offset = myscrollview.contentOffset;
CGRect viewFrame = myscrollview.frame;
viewFrame.size.height -= keyboardSize.height;
myscrollview.frame = viewFrame;
CGRect textFieldRect =[mytext3 frame];
textFieldRect.origin.y +=10;
[myscrollview scrollRectToVisible:textFieldRect animated:YES];
showkeyboard =YES;
}
(void) keyboardhide : (NSNotification *) notification
{
if(!showkeyboard)
{
return;
}
myscrollview.frame =CGRectMake(0, 0, 320, 460);
myscrollview.contentOffset=offset;
showkeyboard=NO;
}