UITextfield
でサブビューとして統合中に問題が発生しましたUITableViewCell
。プロジェクトで次のコードを使用してUITextField
、サブビューとして追加しましたUITableViewCell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier=@"CellIdentifier";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
if (indexPath.row==languageName) {
if (langNameTxtFld==nil) {
langNameTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
langNameTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:langNameTxtFld placeholder:@"Language Name" returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==region) {
if (regionTxtFld==nil) {
regionTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
regionTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:regionTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"region_meaning"] returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==city) {
if (cityTxtFld==nil) {
cityTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
cityTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:cityTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"city_meaning"] returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==school) {
if (schoolsTxtFld==nil) {
schoolsTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
schoolsTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:schoolsTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"schools_meaning"] returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==studies){
if (studiesTxtFld==nil) {
studiesTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
studiesTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:studiesTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"studies_meaning"] returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==email) {
if (emailTxtFld==nil) {
emailTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
emailTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:emailTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"email"] returnType:UIReturnKeyNext]];
}
}
else if (indexPath.row==passwords){
if (passwordsTxtFld==nil) {
passwordsTxtFld=[[UITextField alloc]initWithFrame:CGRectMake(50,0, 265, 44)];
passwordsTxtFld.delegate=self;
[cell addSubview:[self addTextFieldWithText:nil textField:passwordsTxtFld placeholder:[globalPlaceHolderDict valueForKeyPath:@"passwords"] returnType:UIReturnKeyNext]];
}
}
}
cell.backgroundColor=[UIColor whiteColor];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}
TextField をテーブルセルに追加するために、次のようにカスタム関数を使用しました
-(id)addTextFieldWithText:(NSString*)text textField:(id)txtFld placeholder:(NSString*)placeholder returnType:(UIReturnKeyType)keyType {
[txtFld setTextAlignment:UITextAlignmentLeft];
[txtFld setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[txtFld setTextColor:[UIColor blackColor]];
[txtFld setAutocorrectionType:UITextAutocorrectionTypeNo];
[txtFld setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[txtFld setEnablesReturnKeyAutomatically:YES];
[txtFld setClearButtonMode:UITextFieldViewModeWhileEditing];
[txtFld setReturnKeyType:keyType];
[txtFld setPlaceholder:placeholder];
[txtFld setFont:[UIFont fontWithName:@"Helvetica" size:18]];
return txtFld;
}
上記のコードは正常に機能し、次のように出力テーブルビューを取得しました
しかし、UITableView をスクロールしようとすると、UITextField のプレースホルダー値が折りたたまれ、次のように表示されます。
同時に、textField に入力しようとすると、次のようにテキストがプレースホルダー テキストと重なっています。
これについて考えている人は、この問題から抜け出すのを手伝ってください。前もって感謝します..