如何在 UITableViewCell 中添加多行文本字段?
Posted
技术标签:
【中文标题】如何在 UITableViewCell 中添加多行文本字段?【英文标题】:How to add multiline text field in UITableViewCell? 【发布时间】:2015-11-03 08:26:10 【问题描述】:我正在尝试在其单元格中开发具有多行文本字段的 UITableView。 我以编程方式创建了 UITableView 和单元格,此时我添加了一个普通的 UITextField,但我真的想要什么应用程序聊天输入字段之类的东西,所以当我输入更多字符时,它会自动增加其高度和 UITableViewCell 高度。 (请查看附件图片)
我的 UITableView 委托方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1; //count of section
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
return 100;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [selectedTabFields count];
- (UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath:(NSIndexPath *)indexPath
cell= [tableView1 dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil)
cell = [[homeCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:MyIdentifier];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
[cell.contentView addSubview:[self getIntegerTextfield:indexPath.row]];
return cell;
//Integer Textfield
-(UITextField *)getIntegerTextfield:(NSUInteger)index
UITextField *textField= [[UITextField alloc] initWithFrame:CGRectMake(15,40,cell.frame.size.width-30,cell.frame.size.height)];
textField.placeholder=@"Text here";
textField.tag=index;
textField.delegate=self;
textField.keyboardType=UIKeyboardTypeNumbersAndPunctuation;
textField.textAlignment=UITextAlignmentLeft;
textField.font= [UIFont fontWithName:@"Helvetica-Neue Light" size:14];
textField.textColor=[UIColor darkGrayColor];
textField.backgroundColor=[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1];
return textField;
即使它尝试了此代码但它不起作用,当我使用此更改运行时 UITableView 单元格是空的。 Tried the same, but not working 请建议答案。
附加图片
【问题讨论】:
如果你想要多行那么你需要添加 UITextView 因为 UITextField 只有一行。 【参考方案1】:既然有第三方库,为什么还要重新发明***? This 完全符合您的要求。只需改用UITextView
。
编辑:既然你说上面的那个由于某种原因不适合你。您可以使用其他人,例如SlackhQTextViewController 等。
【讨论】:
@Bangalore 很可能您在集成中做错了什么。如果您对使用这个感到不自在,您可以使用 Bharat 的答案或在 google 上查找其他 pod 来执行相同的工作。有很多。 重点是,当其他人以非常稳定的方式为您完成工作时,您不必浪费时间重新发明***。 我在@Bangalore 的回答中添加了另一种选择。【参考方案2】:添加getIntegerTextfield:(NSUInteger)index
textField.frame.size.height = (textField.text.length/a) * b;
a = 您在 xib 中添加的 textField 的大小。 b = 1 行文本字段的高度。
【讨论】:
我根据行数以编程方式创建了这个文本字段 您必须设置文本字段的高度和行高。目前您只设置 Row 的高度,而不是 TextField 怎么?我没明白? - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section return [selectedTabFields count]; 只会设置行高。默认情况下,文本字段是一个单行对象。您还必须设置文本字段的高度。 那个方法是设置行号而不是行高以上是关于如何在 UITableViewCell 中添加多行文本字段?的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewCell 中的 detailTextLabel 中添加多行
当一个被点击时,UITableViewCell 复选标记被添加到多行
如何为选择多行时使用的 UITableViewCell 图像蒙皮?