2012-02-29 79 views
2

我只在iOS上工作了几个月,但我一直在头撞墙,长达数小时,看起来应该是非常简单的东西。我在Xcode中使用了主细节模板来制作iPad应用程序。我希望可以滚动的细节部分显示的内容低于框架中可见的内容,无论在哪个方向。我已经尝试了在viewViewController中的viewWillAppear,viewDidLoad,loadView ...中添加滚动视图的多种组合,并且我可以提出的最佳方式是顶层显示为可滚动视图,因为它显示滚动条并向我显示正确地做了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的指导或技巧。

回答

1

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

+0

很容易。我想通过编程而不是使用IB来让它变得很难。我现在的一个“副作用”是,我的观点实际上是一个UIControl,所以当我触及任何UITextField之外时,它将会关闭键盘。似乎我不能同时拥有和UIScrollView共存? – 2012-02-29 15:59:19

+0

您可以继承'UIScrollView'并覆盖'touchesEnded'来检测视图中的触摸。 – edc1591 2012-02-29 19:38:53

0

而不是试图围绕你的主视图的超级视图(你不正确地试图获得所有权(它应该是NULL)),为什么不把你的UI元素放到一个全尺寸的子视图,并包装围绕该滚动视图?这会容易得多。

您的层次结构是这样的:

Self.view - >滚动型(带contentSize集) - > UIView的需要进行滚动包含元素 - >各种UI元素

相关问题