2009-04-13 20 views
5

W pytaniu 663830, Isaac pyta o dodanie przycisku do pola tekstowego. Czy ktoś może wyświetlać kod, aby dodać etykietę do właściwości .rightView?Dodaj etykietę do UITextField

Czy jest jakiś lepszy sposób na włączenie "stałego" tekstu w polu tekstowym?

Jest to kalkulator, który zawiera jednostki w polu (mg, kg, itp.) Bez konieczności utrzymywania etykiety poza polem tekstowym. Coś w rodzaju stałego tekstu zastępczego?

Dzięki, Chris

Odpowiedz

9

Szybki i brudny kod:

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

pamiętać, że Dodaję ten podrzędny z ViewController, można zrobić go z widzenia, jak również.

+0

Dlaczego jest brudny kod? – Johannes

+0

@Johannes wiele zakodowanych wartości dla rects, kolorów, itp .... Ponadto, nie jestem pewien, czy zrobiłbym to na kontrolerze widoku, wydaje się logiki widoku, nie logika kontrolera do mnie. – pgb

3

Właściwość leftView (lub rightView) na UITextField to pieniądze na tę. Bardzo łatwo zrobić "stały" tekst w polu tekstowym.

- (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

Wiem, że mogę trochę spóźnić się na imprezę, ale jestem pewien, że to pomoże przyszłym programistom zmierzyć się z tą samą sytuacją.

Możecie chce utworzyć kategorię, aby ułatwić korzystanie z różnych aplikacji tak:

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 

Przykład użycia:

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