Ios 以编程方式控制scrollview—;目标-c

Ios 以编程方式控制scrollview—;目标-c,ios,objective-c,cocoa-touch,uiscrollview,Ios,Objective C,Cocoa Touch,Uiscrollview,我有一个滚动视图,上面有一些按钮。当单击一个按钮时,我希望它位于屏幕顶部,这样按钮.frame.origin.y就是self.view.frame.origin.y。如何执行此操作?使用-(void)scrollRectToVisible:(CGRect)rect-animated:(BOOL)animated方法 按下按钮时将视图滚动至所需帧 例如: - (void)buttonPressed:(UIButton*)sender { [scrollView scrollRectToVi

我有一个滚动视图,上面有一些按钮。当单击一个按钮时,我希望它位于屏幕顶部,这样按钮.frame.origin.y就是self.view.frame.origin.y。如何执行此操作?

使用
-(void)scrollRectToVisible:(CGRect)rect-animated:(BOOL)animated
方法

按下按钮时将视图滚动至所需帧

例如:

- (void)buttonPressed:(UIButton*)sender
{
    [scrollView scrollRectToVisible:desireFrameFromButton];
}
你可以这样做

- (void)buttonPressed:(UIButton*)sender
{
    [scrollView setContentOffset:sender.frame.origin animated:YES];
}

请记住,根据定义,视图的
框架
和superview的
框架
位于不同的坐标系中。如果要将视图的位置与其superview的位置进行比较,应使用相同的坐标系。使用视图的
和父视图的
边界
,或者使用
-convertRect:toWindow:
等方法将两个帧转换为某个公共坐标系。这也可能会滚动水平轴。现在还不清楚这是否是我们想要的。解决方法是使用发送方的origin.y和scrollview当前的contentOffset.x构建一个CGPoint,将按钮移动到屏幕上可见的位置,但我希望它正好位于顶部