如何在 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 中添加多行

如何防止 UITextField 显示多行?

当一个被点击时,UITableViewCell 复选标记被添加到多行

如何为选择多行时使用的 UITableViewCell 图像蒙皮?

UItableviewcell中的多行UIlabel使用Autolayout

多行 UILabel 在 UITableViewCell 内的较小 iPhone 中截断或剪切字符串