2009-04-13 13 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は、矩形、色などのハードコーディングされた値をたくさん持っています....また、私はビューコントローラでそれをやるとは思えません。 – 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]; 
関連する問題