2016-08-02 74 views
0

Ich bin eine Anwendung, bei der Erstellung von I dynamisch Komponenten am Anzeige nach Web-Service Daten.Wenn ich mehr als ein Textfeld habe, ich bin die Validierung nicht in der Lage richtig zu tun/es Die Delegate-Methoden werden nicht ordnungsgemäß ausgeführt. Wenn ich nach dem Eingeben von etwas in das erste Textfeld auf das zweite Textfeld klicke, wird der Code, den ich in textFieldDidEndEditing zur Validierung geschrieben habe, nie für textfield1 ausgeführt.Wie Validierung auf mehreren Textfelder in Objective-C zu tun

I m die gleiche Variable für Textfelder in einer Schleife wie folgt aus:

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

Und das Validierungsverfahren wird zum Anzeigen eines Alarm in textfieldDidEndEditing Methode geschrieben, wenn die Überprüfung fehlschlägt.

wie

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

aber das bekommen nicht zum ersten Textfeld ausgeführt wird, wenn ich den Cursor auf die zweite one.thank bewegen Sie sehr viel für jede Hilfe im Voraus.

Antwort

0

In Ihrer for-Schleife, Tags hinzufügen und zu UITextField.

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

Sie sollten den Text sammeln unmittelbar nachdem er durch Setzen des Delegierten des Textfeldes auf Ihre View-Controller

- (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 so etwas wie dies eingegeben werden.

-(void)performValidation { 

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

Aufgrund dieser Komplexität der Zugabe Validierung Textfelder ich eine Klasse crated haben JSInputField (die Unterklasse von UITextField ist). Sie können dem Textfeld eine Validierung mit einer einzelnen Codezeile hinzufügen.

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.