2009-04-13 5 views
5

663830 질문에서 Isaac은 텍스트 필드에 단추를 추가 할 것인지 묻습니다. 누군가가 .rightView 속성에 라벨을 추가하는 코드를 보여줄 수 있습니까?UITextField에 레이블 추가

또는 '영구적 인'텍스트를 텍스트 필드에 포함시키는 더 좋은 방법이 있습니까?

텍스트 필드 외부에 레이블을 유지할 필요없이 필드 (mg, kg 등)에 단위를 포함하는 계산기 용입니다. 영구적 인 자리 표시 자 텍스트와 비슷합니까?

감사합니다, 크리스

답변

9

신속하고 더러운 코드 : 나는의 ViewController에서 하위 뷰를 추가 해요

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

주, 당신은뿐만 아니라 뷰에서 그것을 할 수 있습니다.

+0

왜 더러운 코드입니까? – Johannes

+0

@Johannes rects, colors, etc.에 대한 하드 코딩 된 값이 많습니다. 또한 뷰 컨트롤러에서 볼 수 있을지 모르겠지만 뷰 로직이나 컨트롤러 로직이 아닙니다. – pgb

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

나는 파티가 좀 늦을 지 모르지만 나는 이것이 미래의 프로그래머들이 같은 상황에 직면 할 수 있다고 확신한다.

의 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]; 
관련 문제