我认为我的问题类似于:iOS 8 Keyboard Dismissed delay after modal view controller is dismissed但我不清楚其他帖子如何在我的应用程序中解决它。
在Xcode5 / IOS7中,我展示了一个带有2个UITextField的UIAlertView。用户只需按OK即可继续,或者可以在文本字段中输入密码/确认密码。在IOS7中,当我显示alertview时我隐藏了键盘,当用户点击文本字段时,键盘会自动重新显示:
UIAlertView *startTurnAlert;
UITextField *textField0, *textField1;
startTurnAlert = [[UIAlertView alloc]
initWithTitle:[NSString stringWithFormat:@"Player %d, Begin Turn %d",playerNumber, turnNumber]
message:[NSString stringWithFormat:@"%@, report for duty!", playerNames[playerNumber] ]
delegate:self
cancelButtonTitle:@"Exit Game"
otherButtonTitles:@"OK",
nil
];
startTurnAlert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
textField0 = [startTurnAlert textFieldAtIndex:0];
textField0.secureTextEntry = YES;
textField0.keyboardType = UIKeyboardTypeDefault;
textField0.placeholder = @"Enter a passcode (optional)";
textField1 = [startTurnAlert textFieldAtIndex:1];
textField1.placeholder = @"Re-enter passcode";
textField0.keyboardType = UIKeyboardTypeDefault;
[startTurnAlert show];
[textField0 endEditing:YES];
[textField1 endEditing:YES];
更新到Xcode 6并构建IOS8后,没有代码更改,键盘永远不会隐藏。我试着添加resignFirstResponder,但没有运气:
[startTurnAlert show];
[textField0 resignFirstResponder];
[textField0 endEditing:YES];
[textField1 resignFirstResponder];
[textField1 endEditing:YES];
那么,在IOS8中,我如何隐藏嵌入在UIAlertview 中的UItextField的键盘,直到用户通过点击文本字段实际指示输入文本的意图?
谢谢!
答案 0 :(得分:2)
我遇到了同样的问题,试图隐藏模态弹出窗口中的键盘。 resignFirstResponder
只会做什么。
解决方案......是禁用对话框中的所有UITextFields
控件(因此iOS无法锁定任何需要键盘的控件),然后重新启动稍后启用相关的那些。
这很烦人,但它有效......
(叹气。)
答案 1 :(得分:1)
我不确定是否有人像我这样的iOS9有同样的问题,但我设法让它以这种方式工作:
尝试专注于其中一个文本域
[self.someTextfield becomeFirstResponder];
然后延迟它,然后移除焦点
double delayInSeconds = 0.5; // set the time
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.someTextfield resignFirstResponder];
});
答案 2 :(得分:0)
由于它在iOS 7中运行并且您花费了一段时间,我只想实现类似于here问题中的第二个代码块 从if [uialertcontroller class]
开始