2016-03-26 8 views
5

Używam klawiatury "ciemnej" do standardowego TextField. Jest to pole tekstowe logowania lub pole tekstowe "zapomnij hasło", w którym użytkownik wprowadza pewne informacje, przesyła je, a jeśli się to uda, są wysyłane do innego widoku, zwykle za pomocą standardowego kontrolera nawigacyjnego popViewControllerAanimated :. AlertView może pojawić się pomiędzy.Czarna klawiatura ios z białym tekstem pojawia się po zmianie widoku przy otwartej klawiaturze

Problemem, który widziałem bardzo często jest to, że klawiatura jest otwarta, normalny "ciemny" szary kolor, a następnie użytkownik klika przycisk Wyślij, może wyświetlić się widok alertu, a podczas odrzucania widok przesuwa się do następny ekran z poprzednią klawiaturą wyłączającą ekran. Na nowym ekranie inna domyślna klawiatura stylu może, ale nie musi przesuwać się, a następnie znikać (bez ustawiania pola tekstowego nawet!). Następnie, po kliknięciu w inne pole tekstowe lub wracaniu do poprzedniego widoku i kliknięciu w pole tekstowe, ta czarna klawiatura z białymi klawiszami pojawia się błędnie. Nadal będzie się pojawiał w polach tekstowych, dopóki coś nie będzie w stanie zepsuć go do normalnego ciemnoszarego po kilku kliknięciach.

Próbowałem odrzucić oryginalną klawiaturę przed popViewController dzieje się, na różne sposoby, ale to nie wydaje się pomóc. Jeśli AlertView pojawi się między nimi, przywiązałem popViewController do akcji delegata po kliknięciu przycisku AlertView. Klawiatura zwykle nie znika wystarczająco szybko, aby wyjść przed naciśnięciem przycisku. Opóźnienie to nie pomaga.

EDYCJA: Widok alertu wydaje się być tutaj definitywnym winowajcą, zakłócając w jakiś sposób pop i klawiaturę.

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

Jak mogę uniknąć tej czarno-białej klawiatury?

enter image description here

+0

„Próbowałem odwołać oryginalną klawiaturę przed pushViewController dzieje, na różne sposoby, ale nie wydaje się, aby pomóc” Tak, ale można dostać powiadomienie, gdy klawiatura _has_ zniknął, więc dlaczego nie uruchomisz przejścia kontrolera widoku? – matt

+0

Czy to jest klawiatura niestandardowa? Nie wygląda mi to na klawiaturę Apple ... – Blip

+0

Używam standardowej "ciemnej" standardowej szarej klawiatury w całej aplikacji. Jest ciemniejszy od domyślnego jasnoszarego. ale to nie jest takie czarne. Nie używam niestandardowych klawiatur. – Miro

Odpowiedz

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

Czy możesz podać rozwiązanie dla iOS 9? Mój projekt, w którym występują te problemy, nawet po kompilacji w Xcode 7.3.1. –

+0

Proszę wypróbować powyższy kod, który sprawdził się zarówno w wersji na iOS 8, jak i późniejszej i poniżej 8. – jbchitaliya

+0

Tak! To działało! +1 –

Powiązane problemy