Objective C:如何创建一个多行的UITextField?
Objective C:如何创建一个多行的UITextField?
可能重复:
我应该如何实现一个多行文本框,就像我在iPhone信息应用程序中看到的那样?
看起来一旦输入的长度超过了长度限制,就会自动创建第二行。
编辑:更新以澄清我在使用UITextView时遇到的问题。
对我来说,我想要模仿UITextView的外观和感觉,就像下面显示的那样。我不确定如何使用UITextView来实现。例如:
1)如果我的文本需要溢出到下一行,如何动态扩展框?
2)如何添加下面所示的边框和样式?
3)如何将文本框附加到键盘的正上方(而不是在视图中)?
我知道Instagram也有类似的功能,如果有人可以指点我正确的方向,那就太好了。提前感谢。
问题:如何创建一个多行的UITextField?
原因:需要创建一个可以多行输入的UITextField。
解决方法:
1. 导入UIKit库。
2. 创建一个UIViewController类,添加需要的视图和控件。
3. 在dealloc方法中释放视图和控件。
4. 在viewDidLoad方法中添加键盘显示和隐藏的通知观察者,并设置文本框的滚动和字体。
5. 在keyboardWillShow方法中,根据键盘的高度调整视图的高度和位置。
6. 在keyPressed方法中,根据输入的文本计算文本框的新高度,并根据高度的变化调整视图的位置和大小。
7. 在chatButtonClick方法中,隐藏键盘并重置视图和文本框的状态。
8. 在keyboardWillHide方法中,根据键盘的高度调整视图的高度和位置。
通过以上步骤,我们可以创建一个可以多行输入的UITextField。
问题的出现原因是UITextField
不允许多行输入,但可以使用UITextView
来代替,并使用NSString -sizeWithFont
函数来确定所需的空间大小。解决方法是使用UITextView
代替UITextField
,然后使用NSString -sizeWithFont
函数来计算所需的高度,并将其应用到UITextView
的frame属性上。对于iOS 8及以上版本,可以使用sizeWithAttributes
函数来代替sizeWithFont
函数,并使用titleFieldHeight
作为布局的指标。虽然这种方法不能完全解决换行和默认间距的问题,但在大多数情况下都能工作。关于为什么使用_textField
而不是...View
的问题目前没有解答。