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



我在iOS上工作才几个月,但为了一些看起来应该很简单的事情,我已经用头撞墙好几个小时了。我在一个iPad应用程序中使用了Xcode中的主细节模板。我希望细节部分可以滚动,以显示框架中可见内容下方的任何方向的内容。我尝试过在viewWillAppear、viewDidLoad、loadView中的DetailViewController中添加滚动视图的多种组合。。。我能想到的最好的办法是在顶层显示一个滚动视图,因为它确实显示了滚动条,并向我表明我正确地执行了scrollView.contentSize,因为我可以四处平移,但包含字段和内容的实际视图不会移动,字段也无法编辑。这是我目前的看法。正如您在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,我将衷心感谢您的指导或提示。

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

与其试图将uiscrollview包装在主视图的超视图(您错误地试图获得它的所有权(无论如何它应该是NULL))周围,为什么不将UI元素集中到一个全尺寸的子视图中,并将滚动视图包装在它周围呢?这会容易得多。

您的层次结构如下所示:

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

最新更新