为什么UIScrollView的“contentOffset”更新没有效果?

时间:2011-11-23 14:55:46

标签: objective-c cocoa-touch ipad uiscrollview

我有一个可以垂直和水平滚动的UIScrollView。这个视图充满了许多按钮,每个按钮都有自己的宽度(但都具有相同的高度)。

当其中一个按钮被轻敲时,类似滑块的界面就会生动起来。如果此界面覆盖了所选按钮,则必须滚动整个滚动视图,以便按钮再次可见。

当滚动视图的内容偏移的Y坐标设置为限制时,我的应用程序按预期运行(此限制可以是0或视图的高度)。但是如果内容偏移位于中间垂直位置,则滚动似乎不会发生。

首先,我尝试了以下方法:

CGPoint newOffset = CGPointMake(self.scrollView.contentOffset.x + horizontalVar, 
                                self.scrollView.contentOffset.y); 

[self.scrollView setContentOffset: newOffset animated: YES];

正如我所提到的,哪个不起作用。

然后,我尝试使用其属性设置器手动为视图设置动画:

[UIView animateWithDuration: 0.3 animations: ^{
   CGPoint newOffset = CGPointMake(self.scrollView.contentOffset.x +  horizontalVar, self.scrollView.contentOffset.y);

   self.scrollView.contentOffset = newOffset;
}];

该方法产生以下结果:如果滚动视图在其中一个按钮被轻敲时处于中间垂直位置,则内容偏移更新会导致视觉更改,但视图几乎立即返回其原始状态。

我没有关于这个问题的其他线索。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

也许是因为你没有设置scrollView的ContentSize。