滚动视图中的UIButton在外部初始帧时无响应

时间:2014-01-12 02:43:25

标签: ios xcode uiscrollview uibutton xib

我在xib中创建了一个非常长的视图(> 2000像素)。这个xib被加载然后,在它的ViewController中我切换滚动视图的根视图(我希望滚动20​​00像素);

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *view = self.view;

    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:self.view.frame];

    scroll.contentSize = self.view.bounds.size;

    self.view = scroll;
    [scroll addSubview:view];
}

长视图有一个按钮,但如果它位于长视图顶部之外(即在初始屏幕框架之外),则不会触发。

This post似乎相似但略有不同,因为SO用户正在动态扩展滚动视图的大小。在这种情况下,固定大小的滚动视图(全屏)但我不能在我的xib中击中初始帧之外的东西。在调试期间,我可以看到滚动视图和内容视图的框架都设置(和长)...

<UIView: 0x946db50; frame = (0 0; 320 2320); autoresize = W+H; layer = <CALayer: 0x946db20>>

<UIScrollView: 0x9077e10; frame = (0 0; 320 2320); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xb388bd0>; layer = <CALayer: 0x9276f60>; contentOffset: {0, 0}>

如何确保点击按钮滚动到视图中?

2 个答案:

答案 0 :(得分:0)

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];

这将创建一个scrollView以匹配视图Controller的实际视图

 UIView *newView=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,2320)];

[scrollView addSubview:newView];

//你也可以在故事板的长视图中创建这个视图,从不使用内部的self.view滚动这使得Ur层次结构关键添加到控制器内的更长视图然后将该视图引用到视图中的新实例 - 控制器然后在这里使用

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, newview.frame.size.height);

然后设置

  

OLD回答

将ur scroll视图的contentsize属性设置为滚动视图的高度和滚动视图内的视图宽度...

答案 1 :(得分:0)

通过反复试验我解决了这个问题,但我不确定为什么会这样。在上面的代码中,我初始化UIScrollView与内容视图具有相同大小的框架(实际上没有意义,不确定它为什么会滚动)。

相反,我让它努力调整到屏幕尺寸(因为它将全屏显示):

UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];

现在这一切都在游泳。奇;我很想知道为什么会这样。