2016-03-26 26 views
5

Sto usando una tastiera in stile "scuro" per il mio campo di testo standard. Si tratta di un campo di testo di accesso o di un campo di testo "dimentica la mia password", in cui l'utente inserisce alcune informazioni, lo invia e, se riesce, viene inviato ad un'altra vista, solitamente mediante un controller di navigazione standard popViewControllerAanimated :. Un AlertView può apparire in mezzo.tastiera ios nera con testo bianco appare dopo cambio di visualizzazione con tastiera aperta

Il problema che ho visto un sacco è che la tastiera è aperta, un colore grigio "dark" normale, e quindi l'utente fa clic su Invia, può apparire una visione avviso, e quando respingendo che i la vista si sposta verso il schermata successiva con la tastiera precedente fuori dallo schermo. Sul nuovo schermo un'altra tastiera di stile predefinita può o non può scorrere verso l'alto e quindi scomparire (senza che un campo di testo sia focalizzato su pari!). Quindi, quando si fa clic su un altro campo di testo, o si torna alla vista precedente e si fa clic in un campo di testo, questa tastiera nera con i tasti bianchi appare erroneamente. Continua a essere visualizzato per i campi di testo fino a quando qualcosa non è in grado di tornare al normale grigio scuro dopo pochi clic.

Ho cercato di ignorare la tastiera originale prima che il popViewController avvenga, in vari modi, ma non sembra aiutare. Se AlertView appare tra parentesi, ho legato il comando popViewController all'azione delegato facendo clic sul pulsante AlertView. La tastiera di solito non scompare abbastanza velocemente da lasciare prima della spinta. Un ritardo non aiuta.

EDIT: L'avviso sembra essere un colpevole preciso qui, interferendo con il pop e la tastiera in qualche modo.

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 
    [textfield resignFirstResponder]; 
    [self.view endEditing:YES]; 
    return YES; 
} 

-(IBAction)submitRequest { 
    [textfield resignFirstResponder]; 
    [self.view endEditing:YES]; 

    // make API call, if call succeeds run this block { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"..." 
               message:@"..." 
               delegate:delegate 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil, nil]; 
      dispatch_async(dispatch_get_main_queue(), ^{ 
      [alert show]; 
      });   
    // } 
} 

// delegate after alert OK is pressed 
- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

Come posso evitare questo tastiera nera/bianca?

enter image description here

+0

"Ho cercato di nascondere la tastiera originale prima della pushViewController accade, in vari modi, ma non sembra aiutare" Giusto, ma si ottiene una notifica quando la tastiera _has_ è scomparso, quindi perché non avviare la transizione del controller di visualizzazione, quindi? – matt

+0

È una tastiera personalizzata? Per me non sembra una tastiera Apple ... – Blip

+0

Sto usando la normale tastiera grigia "dark" standard in tutta l'app. È un grigio più scuro di quello grigio chiaro predefinito. ma non è un nero come questo. Non uso tastiere personalizzate. – Miro

risposta

3
Try using the below code. It works fine for iOS 8 and below version 

    if (IS_OS_8_OR_LATER) { 
      UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:title message:msg preferredStyle:UIAlertControllerStyleAlert]; 

      UIAlertAction *cancelAction = [UIAlertAction 
             actionWithTitle:B_title 
             style:UIAlertActionStyleCancel 
             handler:^(UIAlertAction *action) 
             { 
              [self.navigationController popViewControllerAnimated:YES]; 

             }]; 
     [alertVC addAction:cancelAction]; 
     [self presentViewController:alertVC animated:YES completion:nil]; 
     } 
     else{ 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
      [alert show]; 
     } 
} 
+0

Puoi fornire una soluzione per iOS 9? Il mio progetto ha questo problema anche dopo la compilazione in Xcode 7.3.1. –

+0

Si prega di provare sopra il codice ha funzionato sia per iOS 8 e versioni successive e inferiori a 8. – jbchitaliya

+0

Sì! Ha funzionato! +1 –