2013-10-16 111 views
0

我有一個視圖控制器,我添加了一個滾動視圖。然後根據用戶需要的文本字段數量,添加一些UITextFields,動態調整UIScrollView.contentSize的大小。 到目前爲止,我已檢查並雙重檢查了代表,contentSize屬性的大小,文本字段的來源和大小。我用下面的代碼來做到這一點:不能添加UITextField到UIScrollView

-(void)setScrollViewSize 
{ 
    NSLog(@"Rows count: %d", self.rows); 
    self.matrixInputScrollView.contentSize = CGSizeZero; 
    CGSize scrollVieSize; 
    if (!self.columns) { 
    NSLog(@"Setting scroll view frame row"); 
    scrollVieSize = CGSizeMake(self.rows * TEXT_FIELD_WIDTH + (self.rows - 1) * TEXT_FIELD_INDENT, TEXT_FIELD_HEIGHT); 
    } 
    else 
    { 
     NSLog(@"Setting scroll view frame rows and columns"); 
     scrollVieSize = CGSizeMake(self.rows * TEXT_FIELD_WIDTH + (self.rows - 1) * TEXT_FIELD_INDENT, self.columns * TEXT_FIELD_HEIGHT + (self.columns - 1) * TEXT_FIELD_INDENT); 
    } 
    self.matrixInputScrollView.contentSize = scrollVieSize; 

    if (!self.columns) { 
     for (NSInteger i = 0; i < self.rows; ++i) { 
      NSLog(@"Text filed adding"); 
      UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(i * (TEXT_FIELD_WIDTH + TEXT_FIELD_INDENT), 0, TEXT_FIELD_WIDTH, TEXT_FIELD_HEIGHT)]; 
      NSLog(@"uitextfield position ad size: %f %f %f %f", textField.frame.origin.x, textField.frame.origin.y, textField.frame.size.width, textField.frame.size.height); 
      [self.matrixInputScrollView addSubview:textField]; 
     } 
     } 
     else 
     { 
      for (NSInteger i = 0; i < self.rows; ++i) { 
      for (NSInteger j = 0; j < self.columns; ++j) { 
        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(i * (TEXT_FIELD_WIDTH + TEXT_FIELD_INDENT), j * (TEXT_FIELD_HEIGHT + TEXT_FIELD_INDENT), TEXT_FIELD_WIDTH, TEXT_FIELD_HEIGHT)]; 
        [self.matrixInputScrollView addSubview:textField]; 
      } 
     } 
     } 

    NSLog(@"Before setNeedsDisplay"); 
    NSLog(@"Scroll view position and size: %f %f %f %f",  self.matrixInputScrollView.frame.origin.x, self.matrixInputScrollView.frame.origin.y, self.matrixInputScrollView.frame.size.width, self.matrixInputScrollView.frame.size.height); 
    NSLog(@"Scroll view content size: %f %f", self.matrixInputScrollView.contentSize.width, self.matrixInputScrollView.contentSize.height); 
} 

上述樣品的輸出如下:

2013-10-16 15:27:30.672 RZCalc[2765:a0b] Rows count: 3 
2013-10-16 15:27:30.672 RZCalc[2765:a0b] Setting scroll view frame row 
2013-10-16 15:27:30.673 RZCalc[2765:a0b] Text filed adding 
2013-10-16 15:27:30.673 RZCalc[2765:a0b] uitextfield position ad size: 0.000000 0.000000 40.000000 30.000000 
2013-10-16 15:27:30.674 RZCalc[2765:a0b] Text filed adding 
2013-10-16 15:27:30.674 RZCalc[2765:a0b] uitextfield position ad size: 50.000000 0.000000 40.000000 30.000000 
2013-10-16 15:27:30.674 RZCalc[2765:a0b] Text filed adding 
2013-10-16 15:27:30.675 RZCalc[2765:a0b] uitextfield position ad size: 100.000000 0.000000 40.000000 30.000000 
2013-10-16 15:27:30.675 RZCalc[2765:a0b] Before setNeedsDisplay 
2013-10-16 15:27:30.676 RZCalc[2765:a0b] Scroll view position and size: 76.000000 42.000000 244.000000 246.000000 
2013-10-16 15:27:30.676 RZCalc[2765:a0b] Scroll view content size: 140.000000 30.000000 

你在這裏看到是被創建並放置在屏幕上滾動視圖,內容大小相應地調整大小,並創建3個文本字段並將其添加到滾動視圖,並且其內容的大小和範圍在contentSize限制內。

結果是顯示在屏幕上的滾動視圖和文本框不是。

你能告訴上面的代碼是否有問題,或者你需要更多的信息嗎?

+0

當您在添加新行之前設置內容大小時,內容大小是如何正確調整大小的?看看你的最後一個日誌行:內容大小隻有30高和140寬,你的最後一個文本框是在X:67,Y:42(內容大小不足) – Lefteris

+1

只是一個提示NSLog的CGRect。使用'NSLog(「%@」,NSStringFromCGRect(yourframe));'。 – gWiz

+0

您確定沒有顯示它們嗎?確保在TextFields中放置一些文本。 – gWiz

回答

1

添加爲答案評論:

設置標籤的東西比你的滾動視圖的顏色不同的背景顏色,看看他們是否都存在。您沒有爲標籤設置任何格式選項,因此目前它們可能只是透明視圖。