将标签添加到UITextField

时间:2009-04-13 21:18:39

标签: iphone

问题663830,Isaac询问如何向文本字段添加按钮。有人可以显示代码来为.rightView属性添加标签吗?

或者,是否有更好的方法在文本字段中包含“永久”文本?

这适用于包含字段单位(mg,kg等)的计算器,无需在文本字段外维护标签。有点像永久占位符文本?

谢谢, 克里斯

3 个答案:

答案 0 :(得分:10)

快速而肮脏的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 40)];
    textField.borderStyle = UITextBorderStyleLine;
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    label.text = @"mg";
    label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
    textField.rightViewMode = UITextFieldViewModeAlways;
    textField.rightView = label;
    [self.view addSubview:textField];
    [label release];
    [textField release];
}

请注意,我正在从ViewController添加子视图,您也可以从视图中进行。

答案 1 :(得分:3)

UITextField上的leftView(或rightView)属性就是这个上的钱。很容易在文本字段中制作“永久”文本。

- (void)loadView
{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
label.text = @"To:";
label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
self.UITextField.leftViewMode = UITextFieldViewModeAlways;
self.UITextField.leftView = label;
}

答案 2 :(得分:2)

我知道我可能会晚一点,但我相信这可以帮助未来的程序员面对同样的情况。

您可能想要创建一个类别,以便更容易在多个应用程序中使用,如下所示:

<强>的UITextField + PaddingLabel.h

#import <UIKit/UIKit.h>

@interface UITextField (PaddingLabel)

-(void) setLeftPaddingText:(NSString*) paddingValue width:(CGFloat) width;

-(void) setRightPaddingText:(NSString*) paddingValue width:(CGFloat) width;

@end

<强>的UITextField + PaddingLabel.m

#import "UITextField+PaddingLabel.h"

@implementation UITextField (PaddingLabel)

-(void) setLeftPaddingText:(NSString*) paddingValue width:(CGFloat) width
{
    UILabel *paddingLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, self.frame.size.height)];
    paddingLabel.text = paddingValue;
    self.leftView = paddingLabel;
    self.leftViewMode = UITextFieldViewModeAlways;
}

-(void) setRightPaddingText:(NSString*) paddingValue width:(CGFloat) width
{
    UILabel *paddingLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, self.frame.size.height)];
    paddingLabel.text = paddingValue;
    self.rightView = paddingLabel;
    self.rightViewMode = UITextFieldViewModeAlways;
}

@end

用法示例:

[self.dateTextField setLeftPaddingText:@"DATE:" width:defaultWidth];