Черная клавиатура 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];
}
}