【发布时间】:2014-09-25 00:00:32
【问题描述】:
我正在尝试使用 iOS 8 UIAlertController 代替我过去使用 UIAlertView 的位置。我希望用户能够在此警报中输入文本并点击“确定”处理文本或点击“取消”取消。
这是基本代码:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Change Value" message:@"Enter your new value."];
[alert addTextFieldWithConfigurationHandler:nil];
[alert addAction: [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
UITextField *textField = alert.textFields[0];
NSLog(@"text was %@", textField.text);
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"Cancel pressed");
}]];
[presentingVC presentViewController:alert animated:YES completion:nil];
对于旧的UIAlertView,我会用alertViewStyle 或UIAlertViewStylePlainTextInput 标记它。然后,如果用户在输入文本后点击键盘上的“Return”按钮,UIAlertViewDelegate 方法willDismissWithButtonIndex: 将被调用一些buttonIndex(取决于在UIAlertView 中指定了哪些按钮)。
在新的UIAlertController中,如果用户点击“确定”或“取消”按钮,那么他们对应的动作会按预期执行;但是如果用户只是按下键盘上的“Return”键,它只是隐藏了键盘,但警报仍然在屏幕上并且不执行任何操作。
我考虑过配置文本字段以将UITextFieldDelegate 设置为self,然后可能会覆盖textFieldDidReturn: 方法,但我也不知道是否有办法调用其中一个@ 987654334@ 以编程方式执行的操作。无论如何,这听起来有点混乱/骇人听闻。我错过了什么明显的东西吗?
【问题讨论】:
-
我也找不到以编程方式触发操作的方法。多么疏忽……