2013-10-16 2 views
0

저는 스크롤 뷰를 추가 할 뷰 컨트롤러가 있습니다. 그런 다음 사용자가 필요로하는 텍스트 필드 수에 따라 UITextFields 수를 더하고 UIScrollView.contentSize의 크기를 동적으로 조정합니다. 지금까지 위임자, contentSize 속성의 크기, 텍스트 필드의 원점과 크기를 확인하고 두 번 확인했습니다. ,UIScrollView에 UITextField를 추가 할 수 없습니다.

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 

는 당신이 여기에서 보는 것은 생성 화면에 배치되는 스크롤 뷰입니다 :

다음과
-(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); 
} 

위의 샘플의 출력이 될 때 : 나는 그렇게 할 다음 코드 조각을 사용 콘텐츠 크기가 그에 맞게 조정되고 3 개의 텍스트 필드가 만들어지고 contentSize 한도 내에서 원본보기와 크기로 스크롤보기에 추가됩니다.

결과는 화면에 표시되는 스크롤보기이며 텍스트 필드는 표시되지 않습니다.

위 코드가 잘못되었거나 더 자세한 정보가 필요하면 알려 주실 수 있습니까? 답변으로

+0

새 행을 추가하기 전에 콘텐츠 크기를 적절하게 조정하는 방법은 무엇입니까? 마지막 로그 행을 봅니다. 콘텐츠 크기는 너비가 높이 30이고 너비는 140이며 마지막 텍스트 필드는 X : 67, Y : 42입니다 (콘텐츠 크기 외) – Lefteris

+1

CGRect를 NSLogging하기위한 팁. 'NSLog ("% @", NSStringFromCGRect (yourframe));'을 사용하십시오. – gWiz

+0

표시되지 않았습니까? 확실하게 TextField에 텍스트를 넣으십시오. – gWiz

답변

1

추가 코멘트 : 그들이 존재하는 경우

설정하여있는 ScrollView의 색과 다른 뭔가를 라벨의 배경 색상을 볼 수 있습니다. 레이블에 대한 서식 지정 옵션을 설정하지 않으므로 현재는 투명한보기 일 수 있습니다.

관련 문제