2009-04-13 4 views
5

В вопросе 663830 Исаак спрашивает о добавлении кнопки в текстовое поле. Может ли кто-нибудь показать код, чтобы добавить ярлык в свойство .rightView?Добавить ярлык в UITextField

Или, есть ли лучший способ включить «постоянный» текст в текстовое поле?

Это калькулятор, который будет включать в себя единицы измерения в поле (мг, кг и т. Д.) Без необходимости хранить ярлык за пределами текстового поля. Как как постоянный текст заполнителя?

Спасибо, Chris

ответ

9

Быстрый и грязный код:

- (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, вы можете сделать это с точки зрения, как хорошо.

+0

Почему это грязный код? – Johannes

+0

@ Johannes много жестко закодированных значений для прямоугольников, цветов и т. Д. Кроме того, я не уверен, что буду делать это на контроллере представления, кажется логике просмотра, а не логикой контроллера для меня. – pgb

3

Свойство leftView (или rightView) на UITextField - это деньги на этом. Очень легко сделать «постоянный» текст в текстовом поле.

- (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]; 
Смежные вопросы