我正在开发一个应用程序,用户必须写一些信息。为此,我需要一个UITextField是多行(在一般情况下UITextField是单行)。

当我在谷歌搜索时,我找到了一个使用UITextView而不是UITextfield的答案。


当前回答

好吧,我用了一些技巧;)首先构建一个UITextField,并像这样增加它的大小:

CGRect frameRect = textField.frame;
        frameRect.size.height = 53;
        textField.frame = frameRect;

然后在你创建UITextField的同一区域建立一个UITextView,并删除它的背景颜色。现在看起来,你有一个多行TextField !

其他回答

作为上面h4xxr回答的补充,调整UITextField高度的一个更简单的方法是在属性检查器->文本字段中选择方形边框样式。(默认情况下,UITextfield的边框样式是椭圆。)

参考:回答Brian在这里:如何设置UITextField高度?

好吧,我用了一些技巧;)首先构建一个UITextField,并像这样增加它的大小:

CGRect frameRect = textField.frame;
        frameRect.size.height = 53;
        textField.frame = frameRect;

然后在你创建UITextField的同一区域建立一个UITextView,并删除它的背景颜色。现在看起来,你有一个多行TextField !

如果你必须有一个包含2行文本的UITextField,一种选择是为第二行文本添加一个UILabel作为UITextField的子视图。我在我的应用程序中有一个UITextField,用户通常没有意识到可以通过点击编辑,我想添加一些小的字幕文本,说“点击编辑”到UITextField。

CGFloat tapLlblHeight = 10;
UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)];
tapEditLbl.backgroundColor = [UIColor clearColor];
tapEditLbl.textColor = [UIColor whiteColor];
tapEditLbl.text = @"Tap to Edit";

[textField addSubview:tapEditLbl];

使用textView代替,然后遵循它的委托,调用textViewDidChange方法在该方法调用tableView.beginUpdates()和tableview . endpdates(),不要忘记设置rowHeight和estimatedRowHeight为UITableView.automaticDimension。

使用UITextView代替UITextField