如何控制嵌套的scrollviews

时间:2012-08-10 11:19:10

标签: objective-c ios uiscrollview

在我的iphone应用程序中,我想使用2个滚动视图,里面有一些图像。好吧,我的问题是,当我在第一个scrollview上垂直滚动时,我想要探索它的内容,但是当我横向滚动时,我想移动到我的第二个scrollview。我希望我能解释清楚。

好吧,我尝试使用3个滚动视图,其中第一个位于背景上,其他位于第一个滚动视图但我只能同时控制背景滚动视图或其他滚动视图。

有没有办法水平控制第一个,垂直控制其他。对于我的英文,希望它有意义。

3 个答案:

答案 0 :(得分:1)

我有两条建议。

1)滚动视图可以水平和垂直滚动 - 因此,如果您有垂直方向的内容和水平方向的内容,则不需要其中两个。你可以使用一个。

2)如果由于某种原因你确实需要2,那么你可以通过继承UIScrollView并切换到另一个来检测水平滑动。

请记住,UIScrollView会向任何超出其contentSize的方向滚动。因此,在第一种情况(1)中您需要做的就是采用滚动视图2(水平滚动视图)内部的视图,并在滚动视图中将该视图放在滚动视图视口的左侧或右侧外侧滚动它们会看到那个视图,当然也可以在那里垂直滚动。

如果使用方法2 - 确保scrollview 1的内容大小比内容大小宽几个像素,以便您可以检测水平滑动,然后调用coe切换到另一个滚动视图。如果你没有继承UIScrollview来获得滑动,你可能不会得到这个事件。这样做会在该视图的宽度上添加一点,然后查找小于滚动视图左边缘的值并切换到另一个滚动视图。你可以反过来回到上一个scrollview。

我希望这会有所帮助 - 抱歉目前没有代码,但我确实有代码可以在iOS和OSX上运行。

答案 1 :(得分:1)

您可以通过UIScrollView区分if statement 设置UIScrollView的委托 然后在scrollView方法中比较delegate。您可以根据自己的要求更改delegate方法 -

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{
    if(firstScrollView == scrollView)
    {
         //Do your work for firstScrollView
    }

    if(secondScrollView == scrollView)
    {
         //Do your work for secondScrollView
    }

}

答案 2 :(得分:0)

尝试在代表中进行方法

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

设置一些条件,如

if(myScroll1)
{
 //scroll vatical.
}
if(myScroll2)
{
 //scroll horizontal.
}

这不是完整的代码这是一个想法祝你好运..