viewview在iOS7中不再能够隐藏键盘
当视图控制器从导航堆栈弹出时,以下代码用于在iOS6中工作以隐藏键盘:
- (void)viewWillDisappear:(BOOL)animated {
[self.view endEditing:YES];
[super viewWillDisappear:animated];
}
但是,在iOS7中,[self.view endEditing:YES]行似乎被忽略。 我在其他视图事件(viewDidDisappear,viewWillAppear和viewDidAppear)中尝试了命令,它唯一的工作是viewDidAppear。 看起来,一旦启动“流行”,我们就失去了隐藏键盘的能力,直到视图控制器被“推回”堆栈。
虽然将代码放在viewDidAppear中可以隐藏键盘,但不好的一点是,当viewController被推回到导航堆栈时,键盘会短暂地显示出来......从UI角度来看,这是非常不可接受的。
有没有其他人在解决这个问题方面取得了成功? 我宁愿不必写我自己的CANCEL按钮,但现在,这是我能想到的唯一的办法。
iOS 7发生了一些变化,默认情况下,以模态形式呈现的视图控制器不能关闭键盘。 要解决这个问题,你需要覆盖你的视图控制器的disablesAutomaticKeyboardDismissal
方法并返回NO
。
如果它是UITextView
则将editable
属性设置为NO
。 我试过这个,它一旦设置就隐藏键盘。 我没有尝试过使用UITextField
但我猜你会得到相同的结果,将enabled
属性设置为NO
。 如果这不起作用,请创建一个UITextField
,将userInteractionEnabled
设置为NO
作为透明UITextView
的背景,并使用上述的editable
属性。
问题是,在按下“BACK”按钮和viewWillDisappear激发时间之间的某个位置,当前文本字段的canResignFirstResponder设置为FALSE,这会阻止键盘隐藏。 我一直没能在代码中发现任何可能导致这种情况的内容,而且我强烈怀疑它可能是某种iOS 7错误,因为在iOS 6下相同的代码适用于我。
作为解决方法,我实施了以下解决方案。 我将UINavigationController分类并覆盖以下方法:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
[self.topViewController.view endEditing:YES];
return [super popViewControllerAnimated:animated];
}
当我点击后退按钮弹出当前视图控制器时,这导致键盘适当消失。 很好的松了一口气,我没有写一堆自定义的后退按钮。
链接地址: http://www.djcxy.com/p/90333.html上一篇: No longer able to hide keyboard during viewWillDisappear in iOS7
下一篇: How to adjust the orientation of UIViewControllerWrapperView (in IOS7)?