【问题标题】:How to create UITextField with placeholder to the left and edited text to the right?如何使用左侧的占位符和右侧的编辑文本创建 UITextField?
【发布时间】:2013-09-11 08:09:58
【问题描述】:

如何创建 UITextField,左边是占位符,右边是编辑文本?

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

【问题讨论】:

    标签: ios objective-c uitextfield


    【解决方案1】:

    为此,您应该将UILabel 添加到不可编辑且不允许触摸的UITextField。然后将UITextField上的文字对齐方式设置为NSTextAlignmentRight

    【讨论】:

      【解决方案2】:

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

          [textField setTextAlignment:NSTextAlignmentRight];
      

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

          [textField setLeftView:<your label here>];
      

      【讨论】:

        【解决方案3】:

        我刚刚创建了一个自定义 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% 完美,因为标签大小不是动态设置的……但它应该让你启动并运行它并且它可以工作:-)

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-12
            • 1970-01-01
            • 2018-08-04
            • 2015-08-29
            • 2016-11-16
            • 2013-07-31
            相关资源
            最近更新 更多