如何在主详细信息应用程序中使详细视图可滚动

时间:2012-02-29 03:52:45

标签: objective-c ios cocoa-touch uiscrollview

我只在iOS上工作了几个月,但是我一直在墙上撞了好几个小时,看起来应该很简单。我在Xcode中使用了主要的详细信息模板来获取iPad应用。我希望细节部分可滚动,以在任一方向上显示框架中可见内容以下的内容。我在viewWillAppear,viewDidLoad,loadView中尝试了在DetailViewController中添加scrollview的多种组合......我能想出的最好的是顶层的可滚动视图,因为它显示滚动条并向我显示我我可以正确浏览scrollView.contentSize,但是带有字段和内容的实际视图不会移动,并且无法编辑字段。这是我的viewDidAppear,因为它就在这一刻。正如您在NSLogs中看到的,我试图理解视图堆栈。如果我在日志之前取消注释该行,我会完全丢失滚动条。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
    scrollView.contentSize = CGSizeMake(2048, 2048);

    UIView *parentView = [[UIView alloc] init];

    parentView = [[self view] superview];

    [[parentView superview] addSubview:scrollView];

    //[scrollView addSubview:[self view]];

    NSLog(@"%@", [parentView superview]);
    NSLog(@"%@", parentView);
    NSLog(@"%@", [super view]);
    NSLog(@"%@", [self view]);

    [scrollView setDelegate:self];

}

我真诚地感谢有关如何在此方案中正确实施UIScrollView的任何指导或提示。

2 个答案:

答案 0 :(得分:1)

您应该在IB中添加UIScrollView。务必将所有现有视图和控件移动为滚动视图的子视图。您必须将滚动视图链接到IBOutlet,以便在视图控制器中设置内容大小。

答案 1 :(得分:0)

不要试图在主视图的超级视图周围包装一个uiscrollview(你错误地试图取得所有权(反正它应该是NULL)),为什么不把你的UI元素放到一个完整大小的子视图中并包装scrollview那个?这会容易得多。

您的层次结构如下所示:

Self.view - > ScrollView(设置了contentSize) - >包含需要滚动的元素的UIView - >各种UI元素