【发布时间】:2009-04-13 21:18:38
【问题描述】:
在问题663830 中,Isaac 询问有关向文本字段添加按钮的问题。有人可以显示代码以向 .rightView 属性添加标签吗?
或者,有没有更好的方法在文本字段中包含“永久”文本?
这适用于在字段中包含单位(mg、kg 等)的计算器,而无需在文本字段之外维护标签。有点像永久占位符文本?
谢谢, 克里斯
【问题讨论】:
标签: iphone
在问题663830 中,Isaac 询问有关向文本字段添加按钮的问题。有人可以显示代码以向 .rightView 属性添加标签吗?
或者,有没有更好的方法在文本字段中包含“永久”文本?
这适用于在字段中包含单位(mg、kg 等)的计算器,而无需在文本字段之外维护标签。有点像永久占位符文本?
谢谢, 克里斯
【问题讨论】:
标签: iphone
快速而肮脏的代码:
- (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 添加子视图,您也可以从视图中添加。
【讨论】:
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;
}
【讨论】:
我知道我参加聚会可能会迟到一点,但我相信这可以帮助未来面临同样情况的程序员。
您可能想要创建一个类别以使其更易于在多个应用程序中使用,如下所示:
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];
【讨论】: