我只有iOS8才有这个问题。所有东西都在iOS7上正常工作。
我的视图配置:
我的测试程序:
问题是,当应用程序恢复时,inputView不再可见,而它就在第4步之前。点击UIView子类不会使它返回。如果在步骤4之后检查UIView子类,则UIView返回它。
知道如何防止我的inputView消失吗?
发布于 2014-11-13 21:17:00
这绝对是一个iOS错误。
inputView发布与普通键盘相同的键盘通知。在这种情况下,尽管UIKeyboardWillHideNotification仍然是第一个响应者,但MainView的inputView在app前台仍被调用。
解决此问题的一个更清晰的方法是在MainView上注册MainView并重置firstResponder状态。
NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleKeyboardWillHideNotification:", name: UIKeyboardWillHideNotification, object: nil)处理小马车的扳机。
func handleKeyboardWillHideNotification(notification:NSNotification) {
if (self.isFirstResponder())
{
self.resignFirstResponder()
self.becomeFirstResponder()
}
}发布于 2014-11-13 18:35:41
我在这里发布了一个示例项目,演示了该bug及其修复:https://github.com/jeremywhuff/HWInputViewBugExample。
在iOS8上运行它,您就会看到这个bug。在iOS7上运行它,就不会了。
我添加了一个"hack fix“开关,这将演示修复。当然不理想,但这是我能想到的最好的。它会导致键盘在模拟器上闪烁,但在设备测试期间,这种情况似乎不会发生。
黑客修复可以在applicationDidBecomeActive中找到:
mainView.textView!.becomeFirstResponder()
NSTimer.scheduledTimerWithTimeInterval(0.05, target: mainView.textView!, selector: "resignFirstResponder", userInfo: nil, repeats: false)这将导致文本视图变成,然后迅速退出第一个响应程序,这似乎将系统踢出其不可见的inputView模式。
https://stackoverflow.com/questions/26110837
复制相似问题