3

如何使用左侧的占位符和右侧的编辑文本创建 UITextField?

文本字段图像

UITextField 本身不允许使用其属性将占位符和已编辑的文本放在不同的侧面。尝试在情节提要 -> 属性检查器 -> 对齐中设置它。他们都在左边或都在右边。仅针对占位符或仅针对文本没有特殊对齐方式。

4

4 回答 4

7

为此,您应该UILabelUITextField其中添加一个不可编辑且不允许触摸的内容。UITextField然后在to上设置文本对齐方式NSTextAlignmentRight

于 2013-09-11T08:14:01.113 回答
5

首先,设置文本向右对齐:

    [textField setTextAlignment:NSTextAlignmentRight];

Fir 占位符,您可以将其添加为子视图,或使用leftView属性:

    [textField setLeftView:<your label here>];
于 2013-09-11T08:15:18.223 回答
1

我刚刚创建了一个自定义 UITextField 子类来执行此操作。要使用它,只需在 Storyboard 或 Xib 上创建您的 UITextField ...在其中放置一个占位符文本,将文本字段类设置为 OBSTextFieldWithLabel,然后您可以使用以下代码:

@interface OBSTextFieldWithLabel : UITextField
@end

@implementation OBSTextFieldWithLabel
  - (void)awakeFromNib
  {
    [super awakeFromNib];

    NSString *labelText = [self placeholder];
    self.placeholder = nil;
    CGRect labelFrame = CGRectMake(20, 10, 150, 15);
    UILabel *placeholderLabel = [[UILabel alloc] initWithFrame:labelFrame];
    [placeholderLabel setFont:[UIFont systemFontOfSize:12]];
    [placeholderLabel setTextColor:[UIColor lightGrayColor]];
    [placeholderLabel setText:labelText];
    [self addSubview:placeholderLabel];
    [self setTextAlignment:NSTextAlignmentRight];
  }
@end

这可能不是 100% 完美,因为标签大小不是动态设置的……但它应该让你启动并运行它并且它可以工作:-)

于 2014-01-21T16:26:42.473 回答
0

我写了一个可以帮助你的控件。本质上,它旨在在编辑 UITextField 时突出显示它,但它也有一个左侧占位符的机制,如您在屏幕截图中所见。

https://www.cocoacontrols.com/controls/sahighlightedtextfield

希望这能为您指明正确的方向。

于 2013-09-11T08:16:41.670 回答