我需要向用户显示多行文字输入" box"高度大于def handle_connection():
# initialize stuff
...
while True:
# stuff to get the request
...
# stuff to handle the request
...
的标准高度。什么是最好或最正确的方法?:
String parkAdd = getString(R.string.stg_ParkAddress_+id);
并在代码中更改其高度或应用某个高度限制。String parkAdd = getString(R.string.stg_ParkAddress_1);
parkAdd = parkAdd.replace("1",id);
if (!parkAdd.equalsIgnoreCase("")){
tvParkAddress.setText(parkAdd);
}
。这是多行的,但默认情况下它没有占位符,我想我应该在代码中实现该功能。答案 0 :(得分:71)
UITextField
仅限一行。
使用UITextView
代替多行文字。
要在UITextView中实现占位符,请使用此逻辑/代码。
首先将UITextView设置为包含占位符文本,并将其设置为浅灰色,以模仿UITextField的占位符文本的外观。可以在viewDidLoad
中或在文本视图的创建中执行此操作。
对于Swift
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
对于Objective-C
textView.text = @"Placeholder";
textView.textColor =[UIColor lightGrayColor];
然后,当用户开始编辑文本视图时,如果文本视图包含占位符(即,如果其文本颜色为浅灰色),请清除占位符文本并将文本颜色设置为黑色以容纳用户&#39进入。
对于Swift
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.lightGrayColor() {
textView.text = nil
textView.textColor = UIColor.blackColor()
}
}
对于Objective-C
- (BOOL) textViewShouldBeginEditing:(UITextView *)textView
{
if (textView.textColor == [UIColor lightGrayColor]) {
textView.text = @"";
textView.textColor = [UIColor blackColor];
}
return YES;
}
然后,当用户完成编辑文本视图并将其作为第一响应者重新签名时,如果文本视图为空,则通过重新添加占位符文本并将其颜色设置为浅灰色来重置其占位符。 / p>
对于Swift
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
}
}
对于Objective-C
- (void)textViewDidEndEditing:(UITextView *)textView{
if ([textView.text isEqualToString:@""]) {
textView.text = @"Placeholder";
textView.textColor =[UIColor lightGrayColor];
}
}
还要在视图控制器中添加UITextViewDelegate
。
答案 1 :(得分:9)
使用选项2,textField的高度无法更改,并且不显示第二行......
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.lightGrayColor() {
textView.text = nil
textView.textColor = UIColor.blackColor()
}
}
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGrayColor()
}
}
答案 2 :(得分:3)
适用于Swift 3
UITextView
本身并不具有占位符属性,因此您必须使用UITextViewDelegate
方法以编程方式创建和操作其中一个。
(注意:将UITextViewDelegate
添加到班级并设置textView.delegate = self
。)
首先将UITextView
设置为包含占位符文本,并将其设置为浅灰色,以模仿UITextField
占位符文本的外观。可以在viewDidLoad
中或在文本视图的创建中执行此操作。
textView.text = "Placeholder"
textView.textColor = UIColor.lightGray
然后,当用户开始编辑文本视图时,如果文本视图包含占位符(即,如果其文本颜色为浅灰色),请清除占位符文本并将文本颜色设置为黑色以容纳用户&#39进入。
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.textColor == UIColor.lightGray {
textView.text = nil
textView.textColor = UIColor.black
}
}
然后,当用户完成编辑文本视图并将其作为第一响应者重新签名时,如果文本视图为空,则通过重新添加占位符文本并将其颜色设置为浅灰色来重置其占位符。 / p>
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Placeholder"
textView.textColor = UIColor.lightGray
}
}
答案 3 :(得分:2)
您无法使用UITextField
执行多行文字,您应该使用UITextView
并实施占位符逻辑。
答案 4 :(得分:2)
我肯定会选择UITextView
。如果您想设置占位符文本,UITextView+Placeholder
可以轻松设置它。您可以使用
pod 'UITextView+Placeholder', '~> 1.2'
在您的pod文件中。 现在您可以导入标题
#import <UITextView+Placeholder/UITextView+Placeholder.h>
有助于轻松设置占位符。
UITextView *textView = [[UITextView alloc] init];
textView.placeholder = @"How are you?";
textView.placeholderColor = [UIColor lightGrayColor]; // optional
textView.attributedPlaceholder = ... // NSAttributedString (optional)