raa*_*aaz 251 uitextfield uitextview ios
我正在开发一个用户必须写一些信息的应用程序.为此,我需要一个UITextField多线(通常UITextField是一条线).
当我在Google上搜索时,我找到了一个使用UITextView而不是UITextfield为此目的的答案.
h4x*_*xxr 424
UITextField 特别是只有一行.
您的Google搜索是正确的,您需要使用UITextView而不是UITextField显示和编辑多行文字.
在Interface Builder中,添加所需的UITextView位置,然后选择"可编辑"框.默认情况下它将是多行的.
Rud*_*udi 19
好吧,我做了一些技巧;)首先构建一个UITextField并增加它是size这样的:
CGRect frameRect = textField.frame;
frameRect.size.height = 53;
textField.frame = frameRect;
Run Code Online (Sandbox Code Playgroud)
然后建立一个UITextView完全在你制作我的同一区域UITextField,并删除它background color.现在看起来你有多条线TextField!
Dav*_*e G 14
您可以使用UITextView伪造UITextField.您将遇到的问题是您丢失了占位符功能.
如果您选择使用UITextView并需要占位符,请执行以下操作:
在viewDidLoad中,将颜色和文本设置为占位符:
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
Run Code Online (Sandbox Code Playgroud)
然后在选择UITextView时使占位符消失:
func textViewDidBeginEditing (textView: UITextView) {
if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() {
myTxtView.text = nil
myTxtView.textColor = .white
}
}
Run Code Online (Sandbox Code Playgroud)
用户完成编辑后,确保有值.如果没有,请再次添加占位符:
func textViewDidEndEditing (textView: UITextView) {
if myTxtView.text.isEmpty || myTxtView.text == "" {
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
}
}
Run Code Online (Sandbox Code Playgroud)
您可能需要伪造的其他功能:
UITextField经常将每个字母大写,您可以将该功能添加到UITableView:
myTxtView.autocapitalizationType = .words
Run Code Online (Sandbox Code Playgroud)
UITextField通常不会滚动:
myTxtView.scrollEnabled = false
Run Code Online (Sandbox Code Playgroud)
除了多行行为之外,UITextView和UITextField之间的主要区别在于UITextView没有提出占位符.要绕过此限制,您可以将UITextView与"假占位符"一起使用.
有关详细信息,请参阅此SO问题:UITextView中的占位符.
| 归档时间: |
|
| 查看次数: |
279113 次 |
| 最近记录: |