0

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

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

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

4

3 回答 3

1

我有两个建议。

1) Scrollviews 可以水平和垂直滚动——所以如果你有垂直方向的内容和水平方向的内容,你不需要其中的两个。你可以用一个。

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

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

如果您使用方法 2 - 确保第一个滚动视图的内容大小至少比内容大小宽几个像素,以便您可以检测到水平滑动,然后调用 coe 切换到您的另一个滚动视图。如果您不子类UIScrollview化以获得滑动,您可能不会获得该事件。所以这样做会增加该视图的宽度,然后查找小于滚动视图左边缘的值并切换到另一个滚动视图。您可以反向执行相同的操作以返回上一个滚动视图。

我希望这会有所帮助 - 抱歉目前没有代码,但我确实有在 iOS 和 OSX 上工作的代码可以做到这一点。

于 2012-08-10T12:31:13.267 回答
1

UIScrollView您可以通过两者if statement 的 Set 委托来区分两者UIScrollView 然后比较您scrollViewdelegate方法。delegate您可以根据您的要求更改您的方法 -

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

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

}
于 2012-08-10T15:16:24.487 回答
0

尝试在代表方法中做

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

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

设置一些条件,例如

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

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

于 2012-08-10T11:35:12.273 回答