2009-04-13 32 views
5

Trong câu hỏi 663830, Isaac hỏi về cách thêm nút vào trường văn bản. Ai đó có thể hiển thị mã để thêm nhãn vào thuộc tính .rightView không?Thêm nhãn vào UITextField

Hoặc, có cách nào tốt hơn để bao gồm văn bản 'vĩnh viễn' trong trường văn bản không?

Điều này dành cho máy tính có thể bao gồm các đơn vị trong trường (mg, kg, v.v.) mà không phải duy trì nhãn bên ngoài trường văn bản. Sắp xếp giống như văn bản giữ chỗ cố định?

Cảm ơn, Chris

Trả lời

9

Nhanh chóng và bẩn mã:

- (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]; 
} 

Lưu ý rằng tôi thêm subview từ ViewController, bạn có thể làm điều đó từ quan điểm là tốt.

+0

Tại sao mã bẩn? – Johannes

+0

@Johannes rất nhiều giá trị hardcoded cho rects, màu sắc, vv .... Ngoài ra, tôi không chắc chắn tôi sẽ làm điều đó trên bộ điều khiển xem, có vẻ như xem logic, không logic điều khiển với tôi. – pgb

3

Thuộc tính leftView (hoặc bên phải) trên UITextField là tiền trên tài khoản này. Rất dễ dàng để làm cho văn bản 'vĩnh viễn' trong một trường văn bản.

- (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; 
} 
1

Tôi biết tôi có thể hơi muộn cho bữa tiệc nhưng tôi chắc chắn điều này có thể giúp các lập trình viên tương lai phải đối mặt với cùng một tình huống.

Bạn có thể muốn tạo ra một loại để làm cho nó dễ dàng hơn để sử dụng trên nhiều ứng dụng như thế này:

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 

Ví dụ sử dụng:

[self.dateTextField setLeftPaddingText:@"DATE:" width:defaultWidth]; 
Các vấn đề liên quan