2012-02-29 127 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元素

相關問題