Черная клавиатура ios с белым текстом появляется после изменения вида при открытой клавиатуре

Я использую клавиатуру в "темном" стиле для моего стандартного TextField. Это для текстового поля входа в систему или текстового поля "забыть мой пароль", где пользователь вводит некоторую информацию, отправляет ее, и в случае успеха они отправляются в другое представление, обычно с помощью стандартного контроллера навигации popViewControllerAanimated:. AlertView может появиться между ними.

Проблема, которую я часто видел, состоит в том, что клавиатура открыта, имеет нормальный "темный" серый цвет, и затем пользователь нажимает кнопку "Отправить", может появиться окно с предупреждением, и при отклонении этого представления оно переходит на следующий экран с предыдущая клавиатура уходит с экрана. На новом экране другая клавиатура по умолчанию может или не может скользить вверх и затем исчезать (без выделения текстового поля даже!). Затем, когда вы щелкаете в другом текстовом поле или возвращаетесь к предыдущему виду и щелкаете в текстовом поле, эта черная клавиатура с белыми клавишами появляется ошибочно. Он продолжает появляться для текстовых полей, пока после нескольких щелчков что-то не сможет вернуть его к обычному темно-серому цвету.

Я пытался закрыть исходную клавиатуру до того, как появился popViewController, различными способами, но, похоже, это не помогло. Если AlertView появляется между ними, я привязал popViewController к действию делегата при нажатии кнопки AlertView. Клавиатура обычно не исчезает достаточно быстро, чтобы уйти до нажатия. Задержка не помогает этому.

РЕДАКТИРОВАТЬ: просмотр предупреждений, кажется, является определенным виновником здесь, каким-то образом вмешиваясь в поп и клавиатуру.

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

Как я могу избежать этой черно-белой клавиатуры?

введите описание изображения здесь

1 ответ

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];
        }
}
Другие вопросы по тегам