2013-06-04 34 views
1

所以我想要一個簡單的UIScrollView與一堆按鈕一起工作。我是能夠成功地完成與下面的代碼此任務:如何從同一個方法外部將一個按鈕添加到UIScrollView作爲子視圖?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [_scroller setScrollEnabled:YES]; 
    [_scroller setContentSize:CGSizeMake(320, 1487)]; 

    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -500, 320, 2800)]; 
    [imgView setBackgroundColor:[UIColor blackColor]]; 
    [_scroller addSubview:imgView]; 


    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [btn1 setTitle:@"Cool title" forState:UIControlStateNormal]; 
    [btn1 setFrame:CGRectMake(7, 7, 150, 160)]; 
    [btn1 setImage:[UIImage imageNamed:@"small.png"] forState:UIControlStateNormal]; 
    [btn1 addTarget:self action:@selector(btn1_m) forControlEvents:UIControlEventTouchUpInside]; 
    [_scroller addSubview:btn1]; 

然而,如果我通過界面生成器添加按鈕,而不是編程方式加入他們嗎?每當我這樣做,滾動不再滾動!

例如,如果我使用下面的代碼後,控制拖動按鈕:

- (IBAction)theButton:(UIButton *)sender { 
    [_scroller addSubview:sender]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [_scroller setScrollEnabled:YES]; 
    [_scroller setContentSize:CGSizeMake(320, 1487)]; 
} 

...滾動不工作,我看到按鈕,但沒有滾動了。基本上,我只是想使用界面生成器來添加按鈕到我的應用程序,讓他們也滾動,但似乎無法得到這個工作!

+0

您是否添加了方法「btn1_m」? – NeverBe

+0

是的,我做到了。如果以編程方式或使用Interface Builder完成,它會正確調用方法,但如果通過Interface Builder完成滾動,則會死亡。 – jake9115

+0

可能是UIImageView塊滾動。你確定其他控件沒有重疊滾動嗎? – NeverBe

回答

0

當以編程方式創建用戶界面,你的滾動視圖的子視圖是這樣的:

ImageView的
按鈕
按鈕
...

當您使用IB添加你的按鈕,你最終與此:

按鈕
按鈕
...
ImageView的

將您的圖像視圖後斷點被添加到滾動視圖。在LLDB控制檯類型:

(LLDB)PO _scroller.subviews

我懷疑你會看到你的圖像視圖在列表的底部。它覆蓋了你的按鈕,但它是滾動的,它看起來不像它,因爲它是一個大的黑色圖像視圖。

發送的圖像視圖的子視圖列表後面:

[_scroller sendSubviewToBack:imgView]。

然後你會再次看到你的按鈕。 此外,你這樣做了之後,確認您的滾動視圖內容大小LLDB:

(LLDB)p _scroller.contentSize

如果這一切看起來是正確的,應該滾動。

相關問題