2011-05-28 51 views
0

在我的視圖創建與320的寬度和70的UIScrollView contentSize問題 - 用實施例代碼

響應於用戶觸摸的按鈕的高度的滾動視圖,我展開滾動視圖,因此它是380( h)×320(w)大小。

這樣做的代碼如下所示:

CGRect scrollviewFrame = CGRectMake(0, 30, 320, 380); 
[scrollView setFrame:scrollviewFrame]; 
[self layoutScrollImages:YES]; 
CGSize srect = CGSizeMake([scrollView bounds].size.width, (kNumImages * (kScrollObjHeight + 10))); 
[scrollView setContentSize:srect]; 

在上述代碼段中提到的常數的定義如下:

const CGFloat kScrollObjHeight = 80; 
const NSUInteger kNumImages  = 100; 

正如我調試這個項目,我可以看到,srect是320 (w)x 8000(h);然而,我的問題是可滾動區域(用戶可以實際觸摸以滾動滾動視圖)與原始大小時保持不變。

我很明顯錯過了一些東西,有人知道它是什麼嗎?

已經創建了一個樣本項目來說明我有這個問題,它可以在這裏找到:http://dl.dropbox.com/u/9930498/ScrollViewTest.zip

回答

2

你的樣品中的問題是你有裝載你的觀點一個非常奇怪的結構。因此,您添加到DetailScrollView實例的視圖是DetailScrollView.xib的根視圖,而不是滾動視圖本身,我相信這正是您所期望的。

解決您的問題的最快方法是調整DetailScrollView.xib中的根視圖以自動調整寬度和高度。

+0

謝謝Joshua。 – 2011-05-28 16:44:25

0

UIView無法響應超級視圖界限之外的觸摸。在您的示例中,您似乎展開了滾動視圖,但滾動視圖的父級仍然只有100個單位高。

0

您應該將scrollView想象爲一個窗口,其中窗口的位置是指scrollView的框架,它也是scrollView檢測觸摸的座標。通過將contentView設置爲320(w)x 8000(h),您只能更改滾動視圖的內容,即該窗口後面的完整區域。

通過擴展內容視圖,scrollView可以滾動更大的區域,但爲了檢測更大矩形中的觸摸,應該更改滾動視圖的框架。