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

时间:2013-09-11 08:09:59

标签: ios objective-c uitextfield

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

textfield image

UITextField本身不允许使用其属性将占位符和已编辑的文本放到不同的边。尝试在故事板中设置它 - >属性检查器 - >对准。它们都在左边或右边。仅对占位符或仅对文本没有特殊对齐。

4 个答案:

答案 0 :(得分:7)

要执行此操作,您应该向UILabel添加UITextField,该UITextField不可编辑且不允许触摸。然后将NSTextAlignmentRight上的文字对齐设置为{{1}}。

答案 1 :(得分:5)

首先,将文本对齐方式设置为右侧:

    [textField setTextAlignment:NSTextAlignmentRight];

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

    [textField setLeftView:<your label here>];

答案 2 :(得分: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%完美,因为标签尺寸没有动态设置而且全部...但它应该让你启动并运行它的工作原理: - )

答案 3 :(得分:0)

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

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

希望这能指出你正确的方向。