我以前使用过UIScrollView
,现在也在使用,从未遇到问题。我正在将其添加到一个旧的应用程序中,虽然它按预期工作(我可以查看内容,用手指滚动,所有边界和尺寸都设置正确,因此内容中没有空白区域等),但我无法使scrollToRectVisible
起作用。我甚至简化了调用,只将其移动到0,0位置:
[scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES];
或将其移动到0,200:
[scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES];
我甚至制作了一个快速应用程序来测试这个功能,我可以像我期望的那样使用scrollRectToVisible
。但是在我的旧应用程序中,我似乎无法使它有任何作用。我可以使用
setContentOffset:
使scrollView滚动,但那不是我想要的。这个scrollView及其内容是通过IB在nib中定义并与IBOutlet一起使用的。我在我的应用程序中仅使用了以下代码来处理scrollView:
[scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)];
我只对垂直滚动感兴趣,而不是水平滚动。
有人遇到过这样的问题吗?
我已经比较了两个应用程序中scrollView的属性,它们是相同的。
附加说明:
我的scrollViews框架是:0.000000 0.000000 480.000000 179.000000
我的scrollViews内容大小为:0.000000 324.000000
它仍然表现得好像我想要滚动到的矩形已经可见,不需要滚动。不确定是否是这种情况。 这真是太奇怪了。看起来像是一个很容易解决的问题...
第二个补充说明:
这是我如何没有使用scrollRectToVisible
进行操作的:
CGPoint point = myRect.origin;
if (![clefScrollView pointInside:point withEvent:nil]) {
point.x = 0;
if (point.y > clefScrollView.contentSize.height - clefScrollView.bounds.size.height)
point.y = clefScrollView.contentSize.height - clefScrollView.bounds.size.height;
[clefScrollView setContentOffset:point animated: YES];
}
这个scrollView的其他方面都如预期一样工作,但是scrollRectToVisible
方法却不行。为什么?有什么猜测吗?