UIAlertController: textfield not returning string

久未见 提交于 2019-12-12 03:55:34

问题


There is something unexpected I cannot sort out. I have an alertController with textfields. I try to get the string value of one of them. Everything works fine when the string length is less than 11 characters. Above this threshold, the string is null.

Could anyone give me a hint on what there is going on?

Just in case, I put my code below:

[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


    }]];

Thanks!


回答1:


are you sure ^(UITextField *textField) and nameTextfield is equal to both, make sure you get the current textfield.

[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


}]];

i changed your code , run it ,make sure the address same to each other.




回答2:


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];

Note :- If You add more textfields then NSArray *textfields contains more textfields. So you can use tag for identify textfields.



来源:https://stackoverflow.com/questions/41514696/uialertcontroller-textfield-not-returning-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!