IOS 8 无法从 UITextField 关闭键盘
IOS 8 can't dismiss keyboard from UITextField
我认为我的问题类似于:iOS 8 Keyboard Dismissed delay after modal view controller is dismissed 但我不清楚其他线程如何在我的应用程序中解决它。
在 Xcode5/IOS7 中,我展示了一个带有 2 个 UITextField 的 UIAlertView。用户可以简单地按 OK 并继续,或者他们可以在文本字段中输入密码/确认密码。在 IOS7 中,我在显示 alertview 时隐藏了键盘,键盘会自动重新出现 if/when 用户点击文本字段:
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 的键盘 直到 用户实际上通过点击文本字段?
谢谢!
由于它在 iOS 7 中有效并且您已经在这上面花费了一段时间,我将只实现类似问题中的第二个代码块的东西 here
从 if [uialertcontroller class]
开始
我遇到了同样的问题,试图隐藏 modal 弹出窗口 window 中的键盘。 resignFirstResponder
什么都不做。
解决方案...是 禁用 对话框中的所有 UITextFields
控件(因此 iOS 无法锁定任何需要键盘),然后在几分之一秒后重新启用相关的键盘。
这很烦人,但它确实有效...
(叹气。)
我不确定是否有人像我一样对 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];
});
我认为我的问题类似于:iOS 8 Keyboard Dismissed delay after modal view controller is dismissed 但我不清楚其他线程如何在我的应用程序中解决它。
在 Xcode5/IOS7 中,我展示了一个带有 2 个 UITextField 的 UIAlertView。用户可以简单地按 OK 并继续,或者他们可以在文本字段中输入密码/确认密码。在 IOS7 中,我在显示 alertview 时隐藏了键盘,键盘会自动重新出现 if/when 用户点击文本字段:
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 的键盘 直到 用户实际上通过点击文本字段?
谢谢!
由于它在 iOS 7 中有效并且您已经在这上面花费了一段时间,我将只实现类似问题中的第二个代码块的东西 here 从 if [uialertcontroller class]
开始我遇到了同样的问题,试图隐藏 modal 弹出窗口 window 中的键盘。 resignFirstResponder
什么都不做。
解决方案...是 禁用 对话框中的所有 UITextFields
控件(因此 iOS 无法锁定任何需要键盘),然后在几分之一秒后重新启用相关的键盘。
这很烦人,但它确实有效...
(叹气。)
我不确定是否有人像我一样对 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]; });