当键盘打开时,在视图更改后显示带白色文本的ios黑色键盘
我正在为我的标准文本字段使用“黑色”风格的键盘。这适用于登录文本字段或“忘记我的密码”文本字段,用户在其中输入一些信息并提交,如果成功,它们将被发送到另一个视图,通常由标准导航控制器PopViewControllerAnimated:。中间可能会出现AlertView 我经常看到的问题是,键盘是打开的,是一种正常的“深”灰色,然后用户单击Submit,可能会出现一个警报视图,当忽略该视图时,该视图会转移到下一个屏幕,而上一个键盘会离开屏幕。在新屏幕上,另一个默认样式的键盘可能会或可能不会向上滑动然后消失(甚至不会聚焦文本字段!)。然后,当单击另一个文本字段,或返回到上一个视图并单击文本字段时,此带白键的黑色键盘错误地出现。它会继续出现在文本字段中,直到有东西能够在点击几下后将其震回正常的深灰色当键盘打开时,在视图更改后显示带白色文本的ios黑色键盘,ios,keyboard,alertview,Ios,Keyboard,Alertview,我正在为我的标准文本字段使用“黑色”风格的键盘。这适用于登录文本字段或“忘记我的密码”文本字段,用户在其中输入一些信息并提交,如果成功,它们将被发送到另一个视图,通常由标准导航控制器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];
}
}