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;
}
'init' 대신 myView에'initWithFrame : CGRectMake (0, 0, 320, 800)]'를 추가하고'[myView setUserInteractionEnabled : YES]'를 추가하고 트릭을 고마워했습니다. – Armand