首次触摸时,UIScrollView会跳转

时间:2012-06-20 04:57:20

标签: iphone ios cocoa-touch uiscrollview

我有两个UIScrollViews,一个是水平的,一个是垂直的,每个都有两个页面(如图所示,水平一个是两页宽,垂直一个是两页高)。水平滚动视图位于垂直滚动视图中。我试图模仿Calcbot的设计,你可以向左/向右滚动按钮,向上/向下滚动历史记录。

但是,当视图加载时,水平滚动视图比它应该的位置高约100个像素。然后,当我触摸它并开始移动它时,它跳跃/跳到正确的位置并停留在那里。如何从一开始就正确显示它?

这是我的viewDidLoad代码:

-(void)viewDidLoad {
horizontalScrollView.pagingEnabled = YES;
verticalScrollView.pagingEnabled = YES;


horizontalScrollView.contentSize = CGSizeMake(horizontalScrollView.bounds.size.width * 2, horizontalScrollView.bounds.size.height); // 2 pages wide.
verticalScrollView.contentSize = CGSizeMake(verticalScrollView.bounds.size.width, verticalScrollView.bounds.size.height * 2);


horizontalScrollView.delegate = self;
verticalScrollView.delegate = self;




[verticalScrollView addSubview:horizontalScrollView];

[verticalScrollView setContentOffset:CGPointMake(0, 640)];

[self.view addSubview:verticalScrollView];

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460);

}

感谢。

3 个答案:

答案 0 :(得分:4)

当您设置了pagingEnabled = YES并且contentOffset设置为不在页面边界上的位置(可以通过bounds.size.height分割)时,通常会跳转到UIScrollView。

答案 1 :(得分:0)

只是一个快速思考,因为我目前正在搞乱UIScrollView。您可以尝试使用-(void)viewWillAppear:(BOOL)animated。例如。我在该方法中设置了min和max滚动,因为它取决于内容的大小,从我读到的内容开始,直到viewWillAppear才会设置。

答案 2 :(得分:0)

移动此行

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460);

viewWillAppear代替viewDidLoad,看看它是否有效