2017-01-06 5 views
0

Es gibt etwas Unerwartetes, das ich nicht aussortieren kann. Ich habe eine alertController mit textfields. Ich versuche, den String-Wert von einem von ihnen zu erhalten. Alles funktioniert gut, wenn die Stringlänge weniger als 11 Zeichen beträgt. Oberhalb dieser Schwelle ist die Zeichenfolge null.UIAlertController: Textfeld gibt keine Zeichenfolge zurück

Kann mir jemand einen Hinweis geben, worum es geht?

Nur für den Fall, habe ich meinen Code unten:

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
     textField.placeholder = @"Name"; 
     textField.textColor = [UIColor blueColor]; 
     textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
     textField.borderStyle = UITextBorderStyleRoundedRect; 
    }]; 

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
     NSArray *textfields = alertController.textFields; 
     UITextField *nameTextfield = textfields[0]; 
     self.textFieldString = nameTextfield.text; 

     NSLog(@"self.textFieldString is: %@", self.textFieldString); // -> this returns a null value when the string length is > 11 


    }]]; 

Dank!

+0

Haben Sie Ihre Lösungen? –

+0

Noch nicht, aber ich hatte keine Zeit, um danach zu graben (krank ...). Ich werde Ihnen Bescheid geben. Danke für die Nachfrage! – Trichophyton

+0

Anscheinend war das Problem mit der "schwachen" Eigenschaftszuweisung verbunden, aber ich kann nicht verstehen, warum es mit kürzerer Schnurlänge arbeitete. Ein Geheimnis. Aber danke, dass du geholfen hast! – Trichophyton

Antwort

0

Sind Sie sicher ^(UITextField *textField) und nameTextfield ist gleich zu beiden, stellen Sie sicher, dass Sie das aktuelle Textfeld erhalten.

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    **NSLog(@"%s", textField);** 
    textField.placeholder = @"Name"; 
    textField.textColor = [UIColor blueColor]; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
}]; 

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    NSArray *textfields = alertController.textFields; 
    UITextField *nameTextfield = textfields[0]; 
    **NSLog(@"%s", nameTextfield);** 
    self.textFieldString = nameTextfield.text; 

    NSLog(@"self.textFieldString is: %@", self.textFieldString); // -> this returns a null value when the string length is > 11 


}]]; 

Ich habe Ihren Code geändert, führen Sie es aus, stellen Sie sicher, dass die Adresse gleich ist.

+0

Ja, es ist dieselbe Adresse. Und es sieht so aus, als wäre es in Ordnung, da es kein Problem gibt, wenn meine Zeichenfolge weniger als 12 Zeichen enthält. Ich erhalte nur den Fehler, wenn die Stringlänge diesen Grenzwert überschreitet. Irgendwelche anderen Vorschläge? – Trichophyton

+0

Ich habe festgestellt, dass der textfield text (nameTextfield.text) auch mit längeren Strings in Ordnung ist, aber nur mein string-Attribut (self.textFieldString) bleibt null, wenn es versucht, eine Zeichenkette> 11 Zeichen zu erhalten, als ob es nicht möglich wäre Schnur länger als diese Länge – Trichophyton

0
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"title" message:@"message" preferredStyle:UIAlertControllerStyleAlert]; 

[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
    textField.placeholder = @"Name"; 
    textField.textColor = [UIColor blueColor]; 
    textField.clearButtonMode = UITextFieldViewModeWhileEditing; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
}]; 

[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    NSArray *textfields = alertController.textFields; 
    UITextField *nameTextfield = textfields[0]; 
    //  self.textFieldString = ; 

    NSLog(@"self.textFieldString is: %@", nameTextfield.text); // -> this returns a null value when the string length is > 11 


}]]; 
[self presentViewController:alertController animated:YES completion:nil]; 

Hinweis: - Wenn Sie mehr Textfelder hinzufügen, dann enthält NSArray *textfields mehr Textfelder. Sie können also das Tag zum Identifizieren von Textfeldern verwenden.

Verwandte Themen