我在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元素