UITextField 内的标签

Posted

技术标签:

【中文标题】UITextField 内的标签【英文标题】:Label inside UITextField 【发布时间】:2014-01-02 02:09:38 【问题描述】:

在我的应用程序中,我正在尝试创建如下所示的 UITextField:

| Name:      John Doe       |
| Email:     asdf@gmail.com |
| Number:    (123)456-7890  |

名称是一个永远不可编辑的左视图标签,标签上有一个小的常量左填充,标签上有一个右填充,因此文本字段中的占位符文本/实际文本都从同一个位置开始。

我尝试给它们一个恒定的宽度,然后从左侧填充标签,但随后标签文本一直出现在左侧,没有填充,如下所示:

|Name:      John Doe       |
|Email:     asdf@gmail.com |
|Number:    (123)456-7890  |

现在,我尝试实现它的方式如下:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 0, 70, 40)];
label.text = @"Name:";
label.font = [label.font fontWithSize:20];
label.textAlignment = NSTextAlignmentRight;
self.testTextField.layer.borderColor=[[UIColor lightGrayColor]CGColor];
self.testTextField.layer.borderWidth= 1.0f;
label.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.0];
self.testTextField.leftViewMode = UITextFieldViewModeAlways;
self.testTextField.leftView = label;

文本字段是用 IB 制作的,看起来应该是这样,除了:

文本/占位符需要左视图标签的填充。它似乎就在它旁边,但需要填充。如何添加此填充?

【问题讨论】:

【参考方案1】:

不幸的是,我求助于创建 UITextField 的子类并更改文本字段左视图的原点。这是我所做的:

- (CGRect) leftViewRectForBounds:(CGRect)bounds 
    CGRect textRect = [super leftViewRectForBounds:bounds];
    textRect.origin.x += 10;
    return textRect;

【讨论】:

以上是关于UITextField 内的标签的主要内容,如果未能解决你的问题,请参考以下文章

动态/可出队的 UITableviewcells 内的 UITextfield

填写所有 UITextField 时,UIButton 未启用

在 UITextField 之外的任何地方关闭触摸键盘

acessoryView 内的 UITextField -- 清除按钮未检测到触摸

如何从动态生成的 UITextField 中检索数据?

如何在不同的 Objective-C 类中调用 UITextField 委托方法?