当键盘打开时,在视图更改后显示带白色文本的ios黑色键盘

当键盘打开时,在视图更改后显示带白色文本的ios黑色键盘,ios,keyboard,alertview,Ios,Keyboard,Alertview,我正在为我的标准文本字段使用“黑色”风格的键盘。这适用于登录文本字段或“忘记我的密码”文本字段,用户在其中输入一些信息并提交,如果成功,它们将被发送到另一个视图,通常由标准导航控制器PopViewControllerAnimated:。中间可能会出现AlertView 我经常看到的问题是,键盘是打开的,是一种正常的“深”灰色,然后用户单击Submit,可能会出现一个警报视图,当忽略该视图时,该视图会转移到下一个屏幕,而上一个键盘会离开屏幕。在新屏幕上,另一个默认样式的键盘可能会或可能不会向上滑动

我正在为我的标准文本字段使用“黑色”风格的键盘。这适用于登录文本字段或“忘记我的密码”文本字段,用户在其中输入一些信息并提交,如果成功,它们将被发送到另一个视图,通常由标准导航控制器PopViewControllerAnimated:。中间可能会出现AlertView

我经常看到的问题是,键盘是打开的,是一种正常的“深”灰色,然后用户单击Submit,可能会出现一个警报视图,当忽略该视图时,该视图会转移到下一个屏幕,而上一个键盘会离开屏幕。在新屏幕上,另一个默认样式的键盘可能会或可能不会向上滑动然后消失(甚至不会聚焦文本字段!)。然后,当单击另一个文本字段,或返回到上一个视图并单击文本字段时,此带白键的黑色键盘错误地出现。它会继续出现在文本字段中,直到有东西能够在点击几下后将其震回正常的深灰色


在popViewController出现之前,我曾尝试以各种方式取消原来的键盘,但似乎没有任何帮助。如果AlertView出现在两者之间,我在单击AlertView按钮时将popViewController绑定到代理操作。键盘的消失速度通常不足以在按下键盘之前离开。耽搁也无济于事

编辑:alertview似乎是这里的罪魁祸首,以某种方式干扰了pop和键盘

-(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];
}
如何避免使用这种黑白键盘?


“我尝试在pushViewController出现之前以各种方式关闭原始键盘,但似乎没有帮助”对,但当键盘消失时,您会收到通知,那么为什么不启动视图控制器转换?这是自定义键盘吗?在我看来,它不像苹果键盘……我在整个应用程序中都使用标准的“黑色”标准灰色键盘。它的灰色比默认的浅灰色深。但它不是像这样的黑色的。我不使用自定义键盘。只是添加一条评论,说我也看到了这个,这是一个非常恼人的错误。哈哈@Blip,不,它看起来一点也不像苹果的键盘,它是一个bug。有人能为iOS 9提供解决方案吗?我的项目在Xcode 7.3.1中编译后仍存在此问题。您能为iOS 9提供解决方案吗?我的项目在Xcode 7.3.1中编译后仍存在此问题。请尝试以上代码。它适用于iOS 8及更高版本和8以下版本。从
UIAlertView
切换到
UIAlertController
为我解决了此问题。
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];
        }
}