2011-11-23 75 views
1

我有一个可垂直和水平滚动的UIScrollView。这个视图中充满了许多按钮,每个按钮都有自己的宽度(但都具有相同的高度)。为什么更新UIScrollView的“contentOffset”不起作用?

当其中一个按钮被点击时,类似滑块的界面就会生效。如果这个界面覆盖了选定的按钮,则必须滚动整个滚动视图,以便该按钮再次变为可见。

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

起初,我尝试以下方法:

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

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

,没有工作,正如我所说。

然后,我试图手动动画视图,利用其属性setter:

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

    self.scrollView.contentOffset = newOffset; 
}]; 

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

我对这个问题没有其他线索。你可以帮我吗?

回答

0

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

+1

我设法解决了这个问题。我有一个与滚动事件相关的委托。这些方法搅乱了我的滚动逻辑。非常感谢您的帮助! –