2016-08-02 4 views
0

Я создаю приложение, в котором я динамически показываю компоненты в соответствии с данными веб-службы. Когда у меня есть несколько текстовых полей, я не могу правильно выполнить проверку/it неправильно выполняет методы делегата. Если я нажму на второе текстовое поле после ввода чего-то в первом текстовом поле, код, который я написал в textFieldDidEndEditing для проверки, никогда не будет выполнен для текстового поля1.Как сделать валидацию в нескольких текстовых полях в объекте c

Я использую ту же переменную для текстовых полей в цикле, как это:

for(int i=0;i<[textfields count];i++) 
{ 
_barcodeTextfield = [UITextField alloc] init]; 
_barcodeTextfield.delegate = self; 
[QuestionView addSubView:_barcodeTextField]; 
} 

И метод проверки записывается в методе textfieldDidEndEditing для отображения предупреждения, если проверка не пройдена.

как

if(textField== _barcodeTextField) 
{ 
//do the validation 
} 

, но это не получить выполняется для первого текстового поля при перемещении курсора на второй one.thank вы очень много для любой помощи заранее.

ответ

0

В вашей петле for добавьте теги также в UITextField.

for(int i=0;i<[textfields count];i++) { 
    _barcodeTextfield = [UITextField alloc] init]; 
    _barcodeTextfield.delegate = self; 
    _barcodeTextfield.tag = i; 
    [QuestionView addSubView:_barcodeTextField]; 
} 

Вы должны собрать текст сразу после того, как он вводится путем установки делегата текстового поля к контроллеру

- (void)textFieldDidEndEditing:(UITextField *)textField { 

    if (textField.tag == 1) { 
     // Store the first name in a property, or array, or something. 
    } Continue the same for other textfields 

    //Perform Validation 
    [self performValidation]; 
    } 

вид PerformValidation будет что-то вроде этого.

-(void)performValidation { 

if (firstProperty.length == 0) { 
    //Display alert 
} 
} 
0

Из-за этой сложности добавления проверки в TextFields я упаковали класс JSInputField (который является подклассом UITextField). Вы можете добавить любую проверку в текстовое поле с помощью одной строки кода.

JSInputField *inputField = [[JSInputField alloc] initWithFrame:CGRectMake(10, 100, 300, 50)]; 
[self.view addSubview:inputField]; 
[inputField setPlaceholder:@"Input Text"]; 
[inputField setRoundedCorners:UIRectCornerAllCorners]; 
[inputField addValidationRule:JSCreateRuleNotNullValue]; //This will validate field for null value. It will show error if field is empty. 
[inputField addValidationRule:JSCreateRuleLength(10)]; //This will validate field for string of length equal to or less than 10. 


JSInputField *inputField = [[JSInputField alloc] initWithFrame:CGRectMake(10, 100, 300, 50)]; 
[self.view addSubview:inputField]; 
[inputField setPlaceholder:@"Input Number"]; 
[inputField setRoundedCorners:UIRectCornerAllCorners]; 
[inputField addValidationRule:JSCreateRuleNotNullValue]; //This will validate field for null value. It will show error if field is empty. 
[inputField addValidationRule:JSCreateRuleNumeric(0)]; //This will validate field for numeric values and restrict to enter value upto 0 decimal places.