2014-09-27 10 views
10

Ho un vecchio progetto Xcode destinato a iOS 6 e versioni successive. Recentemente ho aperto in Xcode 6 e corse in iPhone 6 simulatore per iOS 8. Quando ho provato questa azioneUIAlertView Vs UIAlertController - nessuna tastiera 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]; 

ottengo una finestra pop-up, ma quando clicco sul campo di testo, senza tastiera viene in su . Ho cercato su Google e ho letto che ho bisogno di usare UIAlertController. Dal momento che ho bisogno di supportare anche iOS 6, 7 versioni così ho cambiato il mio codice in questo modo.

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

    } 

Anche se provo la stessa azione NO tastiera viene visualizzato.

Si tratta di un errore nel simulatore Xcode 6 o sto facendo qualcosa di sbagliato?

enter image description here

+1

provare a premere "Comando" + "K", può essere iOS rileva l'tastiera hardware, quindi non è mostra la tastiera –

+0

Nel menu del simulatore opzione Hardware -> Tastiera -> Attiva tastiera software – yazh

risposta

19

Ho provato questo, se iOS 8 rileva una tastiera hardware, di quanto non si apre la tastiera. Dato che potresti provare con il simulatore, non è Mostrare alcuna tastiera

Premere "Command" + "k" e dovresti poter vedere la tastiera.

Quando si prova su un dispositivo non si faccia questo problema, a meno che l'utente ha collegato il suo dispositivo con un hardware di tastiera Bluetooth, quindi questo non è qualcosa che si dovrebbe preoccupare

Spero che questo aiuti

+0

grazie amico, per verificare questo. Segnerò la tua risposta. Onc più domande. Cosa succede se utilizzo solo UIAlertView per dispositivi iOS 8, il codice non funzionerà? Ho provato nel simulatore e funziona –

+3

Funzionerà, ma è deprezzato, quindi Apple potrebbe bloccarlo nelle imminenti versioni di iOS, quindi è buona norma non usare metodi obsoleti e rimanere aggiornato, ma per ora non dovrebbe esserci problema –

2

Un altro modo di vedere la tastiera sta impostando un tipo di tastiera. Questo potrebbe essere un esempio di codice:

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

Poi si vedrà tastiera del simulatore quando si mostra l'AlertController