2014-02-05 4 views
2

Я новичок в Objective c, и я столкнулся с проблемой заполнения в нескольких текстовых полях формы регистра. У меня 4 текстовых полей, и это мой код и попытаться установить левый отступы:Заполнение нескольких текстовых полей

UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)]; 
paddingView.backgroundColor = [UIColor clearColor]; 

self.textField1.leftView = paddingView; 
self.textField1.leftViewMode = UITextFieldViewModeAlways; 

self.textField2.leftView = paddingView; 
self.textField2.leftViewMode = UITextFieldViewModeAlways; 

self.textField3.leftView = paddingView; 
self.textField3.leftViewMode = UITextFieldViewModeAlways; 

self.textField4.leftView = paddingView; 
self.textField4.leftViewMode = UITextFieldViewModeAlways; 

Проблема заключается в том, что он выходит из строя, и я не могу найти почему. Любая помощь?

+0

Как может тот же paddingView жить в четырех разных местах? Возможно, вам следует попробовать сделать четыре разных paddingViews. – matt

+0

как я могу это сделать? – Zafiris

+0

Также, если вы делаете это только для того, чтобы заполнить текстовое поле (т. Е. Установить границу, где начинается его текст), это действительно глупый способ сделать это. Создайте собственный подкласс текстового поля и переопределите методы, предоставляемые для размещения текста там, где вы хотите. Для этого они нужны! например 'textRectForBounds:' – matt

ответ

7

Возможно, проблема возникает из-за того, что вы пытаетесь применить один и тот же выделенный paddingView во всех текстовых полях. Я не могу попробовать свое решение прямо сейчас, но я думаю, что это работает.

Сначала добавьте коллекцию UITextFields для всех TextFields, которые вы используете, не textField1, и т.д. Таким образом, поля 2 вы будете иметь свойство так:

IBOutletCollection(UITextField) NSArray *myTextFields; 

Следующая использовать для цикла:

for (int i = 0; i < self.myTextFields.count; i++) { 
    UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)]; 
    UITextField *myField = [self.myTextFields objectAtIndex:i]; 

    paddingView.backgroundColor = [UIColor clearColor]; 
    myField.leftView = paddingView; 
    myField.leftViewMode = UITextFieldViewModeAlways; 
} 
+0

Спасибо, что dimimpou работает нормально. – Zafiris

1

чтобы изменить текст в поле, сделать текстовое поле подклассов что-то вроде этого (я на самом деле не запустить этот код, так что вы, возможно, потребуется настроить его):

@interface MyPaddedTextField : UITextField 

- (CGRect)textRectForBounds:(CGRect)bounds { 
    CGRect r = [super textRectForBounds:bounds]; 
    r.origin.x += 5; 
    r.size.width -= 5; 
    return r; 
} 

@end 
+0

матовый, где я могу положить это? в моем контроллере и работает автоматически? – Zafiris

Смежные вопросы