Ich versuche, die iOS 8 UIAlertController
anstelle von wo ich eine UIAlertView
in der Vergangenheit verwendet haben würde. Ich möchte, dass der Benutzer Text in diesen Alarm eingeben kann und drücken Sie "OK", um den Text zu bearbeiten, oder "Abbrechen", um abzubrechen.UIAlertController mit Textfeld - Drücken der Return-Taste nur versteckt Tastatur, führt keine Aktion?
Hier ist der Grundcode:
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];
Mit dem alten UIAlertView
, ich habe es mit einem alertViewStyle
von UIAlertViewStylePlainTextInput
markieren würde. Wenn der Benutzer dann nach der Texteingabe die "Return" -Schaltfläche auf seiner Tastatur drückt, würde die UIAlertViewDelegate-Methode willDismissWithButtonIndex:
mit einigen buttonIndex
aufgerufen werden (abhängig davon, welche Schaltflächen in der UIAlertView
angegeben wurden).
Im neuen UIAlertController
, wenn der Benutzer die „OK“ oder „Abbrechen“ Tasten tippt, dann werden die entsprechenden Aktionen wie erwartet durchgeführt werden; Wenn der Benutzer jedoch nur die "Return" -Taste auf der Tastatur drückt, wird nur die Tastatur ausgeblendet, aber die Warnung bleibt auf dem Bildschirm und es wird keine Aktion ausgeführt.
Ich habe darüber nachgedacht, das Textfeld den UITextFieldDelegate
-self
, und dann vielleicht das Überschreiben der textFieldDidReturn:
Methode zu setzen Konfiguration, aber ich weiß auch nicht, ob es einen Weg gibt, programmatisch eine der UIAlertController
‚s Aktionen aufzurufen. Und das klingt irgendwie chaotisch/hacky. Fehle ich etwas Offensichtliches?
Ich kann auch keine Möglichkeit finden, Aktionen programmgesteuert auszulösen. Was für ein Versehen ... – elsurudo