Ala*_*ele 15 keyboard objective-c ios ios7 xcode5
以下代码用于在iOS6中工作,以便在从导航堆栈弹出视图控制器时隐藏键盘:
- (void)viewWillDisappear:(BOOL)animated {
[self.view endEditing:YES];
[super viewWillDisappear:animated];
}
Run Code Online (Sandbox Code Playgroud)
但是,在iOS7中,[self.view endEditing:YES]行似乎被忽略了.我在其他视图事件(viewDidDisappear,viewWillAppear和viewDidAppear)中尝试了该命令,并且它唯一使用的是viewDidAppear.似乎一旦启动"弹出",我们将失去隐藏键盘的能力,直到视图控制器被"推回"到堆栈上.
虽然将代码放在viewDidAppear中确实可以隐藏键盘,但不好的是当viewController被推回到导航堆栈时键盘会短暂显示......从UI的角度来看,这是非常不可接受的.
有没有其他人成功解决这个问题?我不想编写自己的CANCEL按钮,但是现在,这是我能想到的唯一可行的方法.
问题是,在我按下“BACK”按钮和 viewWillDisappear 触发之间的某个时间,当前文本字段的 canResignFirstResponder 设置为 FALSE,这会阻止键盘隐藏。我无法在我的代码中发现任何可能导致此问题的内容,并且我强烈怀疑这可能是某种 iOS 7 错误,因为相同的代码在 iOS 6 下也适用于我。
作为解决方法,我实施了以下解决方案。我对 UINavigationController 进行了子类化并重写了以下方法:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {
[self.topViewController.view endEditing:YES];
return [super popViewControllerAnimated:animated];
}
Run Code Online (Sandbox Code Playgroud)
当我点击“后退”按钮弹出当前视图控制器时,这导致键盘适当消失。我不必编写一堆自定义后退按钮,这让我松了一口气。
| 归档时间: |
|
| 查看次数: |
4028 次 |
| 最近记录: |