2014-09-27 3 views
10

Ich habe ein altes Xcode-Projekt, das für iOS 6 und höher ausgerichtet ist. Ich öffnete sie vor kurzem in Xcode bis 6 und lief in iPhone 6 Simulator für iOS 8. Wenn ich diese Aktion versuchtUIAlertView Vs UIAlertController - keine Tastatur in iOS 8

UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Enter Folder Name" 
                message:@"Keep it short and sweet" 
                delegate:self 
              cancelButtonTitle:@"Cancel" 
              otherButtonTitles:@"OK", nil]; 

    dialog.alertViewStyle = UIAlertViewStylePlainTextInput; 
    dialog.tag = 400; 
    [dialog show]; 

ich ein Pop-up-Fenster bekommen, aber wenn ich auf das Textfeld klicken, keine Tastatur kommt . Ich habe gegoogelt und gelesen, dass ich stattdessen UIAlertController verwenden muss. Da ich iOS 6, 7 Versionen auch unterstützen muss, habe ich meinen Code so geändert.

if ([UIAlertController class]) 
    { 
     // use UIAlertController 
     UIAlertController *alert= [UIAlertController 
             alertControllerWithTitle:@"Enter Folder Name" 
             message:@"Keep it short and sweet" 
             preferredStyle:UIAlertControllerStyleAlert]; 

     UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault 
                handler:^(UIAlertAction * action){ 
                 //Do Some action here 
                 UITextField *textField = alert.textFields[0]; 
                 NSLog(@"text was %@", textField.text); 

                }]; 
     UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault 
                 handler:^(UIAlertAction * action) { 

                  NSLog(@"cancel btn"); 

                  [alert dismissViewControllerAnimated:YES completion:nil]; 

                 }]; 

     [alert addAction:ok]; 
     [alert addAction:cancel]; 

     [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) { 
      textField.placeholder = @"folder name"; 
      textField.keyboardType = UIKeyboardTypeDefault; 
     }]; 

     [self presentViewController:alert animated:YES completion:nil]; 

    } 
    else 
    { 
     // use UIAlertView 
     UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Enter Folder Name" 
                 message:@"Keep it short and sweet" 
                 delegate:self 
               cancelButtonTitle:@"Cancel" 
               otherButtonTitles:@"OK", nil]; 

     dialog.alertViewStyle = UIAlertViewStylePlainTextInput; 
     dialog.tag = 400; 
     [dialog show]; 

    } 

Auch wenn ich versuche, die gleiche Aktion NO Tastatur angezeigt wird.

Ist das ein Fehler im Xcode 6-Simulator oder mache ich etwas falsch?

enter image description here

+1

Try „Command“ + „K“ drücken, kann iOS Hardware-Tastatur erkennt so ist es nicht zeigt die Tastatur –

+0

In Simulator Menüoption Hardware -> Tastatur -> Toggle Software-Tastatur – yazh

Antwort

19

Getestet habe ich diese, wenn iOS8 eine Hardware-Tastatur erkennt, als sie nicht über die Tastatur öffnet. Wie Sie vielleicht im Simulator testen, so dass es keine Tastatur zeigt

Drücken Sie "Command" + "k" und Sie sollten in der Lage sein, die Tastatur zu sehen.

Wenn auf einem Gerät testen Sie dieses Problem nicht konfrontiert sein werden, es sei denn, Benutzer sein Gerät mit einer Hardware-Bluetooth-Tastatur verbunden ist, so ist dies nicht etwas, das Sie sollten diese

+0

danke Mann, um dies zu überprüfen. Ich werde deine Antwort markieren. Onc mehr Frage. Was passiert, wenn ich nur UIAlertView für iOS 8-Geräte verwende, funktioniert dieser Code nicht? Ich habe versucht im Simulator und es funktioniert –

+3

Es wird funktionieren, aber es ist abgeschrieben, so Apple könnte dies in den kommenden iOS-Releases stoppen, so ist es gute Praxis, nicht beraubte Methoden zu verwenden und auf dem neuesten Stand zu bleiben, aber jetzt sollte es kein Problem sein –

2

andere Art und Weise hilft über

Hoffnung Sorge Wenn Sie die Tastatur sehen, wird ein Tastaturtyp festgelegt. Dies könnte ein Beispiel-Code sein:

UIAlertController* alertController = [UIAlertController 
            alertControllerWithTitle:@"Test" 
            message:@"Testing keyboard" 
            preferredStyle:UIAlertControllerStyleAlert]; 
[alertController addTextFieldWithConfigurationHandler: ^(UITextField *tf) 
{ 
    tf.autocorrectionType = UITextAutocorrectionTypeYes; 
    tf.keyboardType = UIKeyboardTypeDefault; 
}]; 
[self presentViewController:alertController animated:YES completion:nil]; 

Dann werden Sie Simulator Tastatur sehen, wenn Sie die AlertController zeigen