两个滚动视图工作同时一触即发

时间:2011-11-29 06:24:58

标签: iphone ios xcode

我正在处理它的应用程序我必须同时使用两个滚动视图同步。这意味着如果我同时滚动一个滚动视图,则另一个滚动视图必须滚动它。

如果可以,那怎么办呢?

4 个答案:

答案 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)

  • (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

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;

}