iOS - 如何关闭键盘?
Posted
技术标签:
【中文标题】iOS - 如何关闭键盘?【英文标题】:iOS - how to dismiss keyboard? 【发布时间】:2013-12-01 00:00:00 【问题描述】:在我的应用程序中,我按下一个按钮,它会拉出一个模态演示文稿表(适用于 iPad)。在这个模态视图中,我的主视图中有一个滚动视图,我的滚动视图中有 1 个文本字段。
view controller
view
scrollview
text field
我没有尝试过让键盘退出,但我不知道为什么。唯一发生的事情是文本字段中闪烁的光标消失了。我的班级是滚动视图和文本字段的代表。这是我尝试过的:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
[self.titleTextField resignFirstResponder];
[self.titleTextField endEditing:YES];
[self.view endEditing:YES];
[self.view resignFirstResponder];
[self.scrollView endEditing:YES];
[self.scrollView resignFirstResponder];
该方法确实被调用,但键盘并没有消失。谁能帮助我,或者至少告诉我为什么?
这是我如何展示这个模态展示视图:
(它来自一个tableviewcontroller)
didSelectRowAtIndexPath
EditVideo *targetController = [self.storyboard instantiateViewControllerWithIdentifier:@"editVideo"];
targetController.delegate = self;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:targetController];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navigationController animated:YES completion:nil];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
【问题讨论】:
我的猜测是您的 titleTextField 不是第一响应者,或者您正在代码中的其他地方再次使用它。也看这里:***.com/a/1823360/312312 您确认您是第一响应者吗?试试 Steves 的 UIView 的 gewtfirstresponder 代码:***.com/questions/8772468/… 滚动后是否会调用 scrollViewDidScroll 并且您可能已将焦点放回滚动视图并重新启动第一响应者? 当我试图找到 firstResponder 时,它返回 null。 但是,当我检查 [self.titleTextField isFirstResponder] 时,它返回 1(true)。 【参考方案1】:在 iPad 上,对于任何非全屏显示的 ViewController,您必须实现 -(BOOL)disablesAutomaticKeyboardDismissal
以返回 NO
以关闭键盘。
- (BOOL)disablesAutomaticKeyboardDismissal
return NO;
实施后,您可以致电[self.view endEditing:YES];
。
编辑:
此问题的另一个常见原因是从- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
返回NO
。实现UITextFieldDelegate中的方法,让它无条件返回YES
,证明它不是一个因素。
【讨论】:
试过了,可惜还是没有:( @JosueEspinosa:您是否在呈现的(表单)视图控制器和呈现中都实现了它? 我做到了。唯一改变的是文本字段失去了光标,键盘保持在原来的位置。 我更新了我的答案,现在包括我遇到的这个问题的两个原因。您的代码中可能存在错误。发布您的视图控制器代码,以便我们查看。 更新了我的问题。顺便说一句,文本字段不是以编程方式制作的,它是通过 Interface Builder 制作的。我不会在任何课程中以任何方式更改文本字段。以上是关于iOS - 如何关闭键盘?的主要内容,如果未能解决你的问题,请参考以下文章