2012-03-08 5 views
1

UITextFields 및 UITextViews를 동적으로 추가하고, TextFields 및 TextViews를 지정하는 XML 파일을 가지고 런타임을 작성한 다음 UI를 작성합니다. 하지만보기에 추가하고 앱을 실행 한 후에는 입력 할 수 없습니다.UITextField 및 UITextView는 입력 할 수 없습니다.

여기 수 있도록 UserInteraction이며, 적절한 프레임 RECT 설정 'MYVIEW'을 확인 MYVIEW을 확인하기 위해 내 추가 코드

do { 
    if([[TBXML textForElement:[TBXML childElementNamed:@"FlowDirection" parentElement:element]] isEqualToString:@"Output"]) 
    { 
     if([[TBXML textForElement:[TBXML childElementNamed:@"TypeName" parentElement:element]] isEqualToString:@"System.String"] && [[TBXML textForElement:[TBXML childElementNamed:@"ExtendedType" parentElement:element]] isEqualToString:@"None"] && ([TBXML childElementNamed:@"EnumValues" parentElement:element]->firstChild == nil)) 
     { 
      UILabel *fieldLabel = [[UILabel alloc] initWithFrame:CGRectMake(FirstX, FirstY, 100, 40)]; 
      fieldLabel.text = [TBXML textForElement:[TBXML childElementNamed:@"Name" parentElement:element]]; 
      [myView addSubview:fieldLabel]; 
      [fieldLabel release]; 
      UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(FirstX + 110, FirstY, 150, 40)]; 
      [textField setBorderStyle:UITextBorderStyleRoundedRect]; 
      [textField setEnabled:YES]; 
      textField.delegate = self; 
      [myView addSubview:textField]; 
      FirstY += 50; 
      [textField release]; 
     } 
     else if([[TBXML textForElement:[TBXML childElementNamed:@"TypeName" parentElement:element]] isEqualToString:@"System.String"] && [[TBXML textForElement:[TBXML childElementNamed:@"ExtendedType" parentElement:element]] isEqualToString:@"MultilineText"] && ([TBXML childElementNamed:@"EnumValues" parentElement:element]->firstChild == nil)) 
     { 
      UILabel *fieldLabel = [[UILabel alloc] initWithFrame:CGRectMake(FirstX, FirstY, 100, 40)]; 
      fieldLabel.text = [TBXML textForElement:[TBXML childElementNamed:@"Name" parentElement:element]]; 
      [myView addSubview:fieldLabel]; 
      [fieldLabel release]; 
      UITextView *textViewStatus = [[UITextView alloc] initWithFrame:CGRectMake(FirstX +110, FirstY, 150, 100)]; 
      FirstY += 110; 
      [textViewStatus setTextAlignment:UITextAlignmentLeft]; 

      // For the border and rounded corners 
      [[textViewStatus layer] setBorderColor:[[UIColor lightGrayColor] CGColor]]; 
      [[textViewStatus layer] setShadowColor:[[UIColor grayColor] CGColor]]; 
      [[textViewStatus layer] setBorderWidth:1]; 
      [[textViewStatus layer] setCornerRadius:15]; 
      [textViewStatus setClipsToBounds: YES]; 
      textViewStatus.delegate = self; 
      [textViewStatus setEditable:YES]; 

      [myView addSubview:textViewStatus]; 

      [textViewStatus release]; 
     } 
     else 
     { 
      UILabel *fieldLabel = [[UILabel alloc] initWithFrame:CGRectMake(FirstX, FirstY, 100, 40)]; 
      fieldLabel.text = [TBXML textForElement:[TBXML childElementNamed:@"Name" parentElement:element]]; 
      [myView addSubview:fieldLabel]; 
      UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(FirstX + 110, FirstY, 150, 40)]; 
      textField.delegate = self; 
      [textField setBorderStyle:UITextBorderStyleRoundedRect]; 
      [textField setEnabled:YES]; 
      [myView addSubview:textField]; 
      FirstY += 50; 

      [fieldLabel release]; 
      [textField release]; 
     } 
    } 
} while ((element = element->nextSibling)); 

추가 대리인이

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    return YES; 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
{ 
    return YES; 
} 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    return YES; 
} 

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView 
{ 
    return YES; 
} 
- (BOOL)textViewShouldEndEditing:(UITextView *)textView 
{ 
    return YES; 
} 
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    return YES; 
} 

답변

2

시도이다.

+0

'init' 대신 myView에'initWithFrame : CGRectMake (0, 0, 320, 800)]'를 추가하고'[myView setUserInteractionEnabled : YES]'를 추가하고 트릭을 고마워했습니다. – Armand

관련 문제