首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS8 - UIView inputView在应用程序恢复后消失。

iOS8 - UIView inputView在应用程序恢复后消失。
EN

Stack Overflow用户
提问于 2014-09-30 00:15:57
回答 2查看 662关注 0票数 3

我只有iOS8才有这个问题。所有东西都在iOS7上正常工作。

我的视图配置:

  • 我有一个UIView子类,它有一个自定义inputView (自定义键盘)
  • UIView子类有一个点击手势识别器,这使得它在点击时成为第一个响应器。
  • UIView子类包含一个UITextView子视图。

我的测试程序:

  1. 点击UIView子类。显示了自定义键盘。
  2. 点击inputView上的一个特殊键,使UITextView成为第一个响应者。显示了alpha键盘。
  3. 在UITextView中输入文本之后,再次点击UIView子类,使其成为第一个响应程序。alpha键盘消失,自定义键盘重新出现。
  4. 单击“主页”按钮退出到主屏幕。点击应用程序图标恢复应用程序。

问题是,当应用程序恢复时,inputView不再可见,而它就在第4步之前。点击UIView子类不会使它返回。如果在步骤4之后检查UIView子类,则UIView返回它。

知道如何防止我的inputView消失吗?

EN

回答 2

Stack Overflow用户

发布于 2014-11-13 21:17:00

这绝对是一个iOS错误。

inputView发布与普通键盘相同的键盘通知。在这种情况下,尽管UIKeyboardWillHideNotification仍然是第一个响应者,但MainViewinputView在app前台仍被调用。

解决此问题的一个更清晰的方法是在MainView上注册MainView并重置firstResponder状态。

代码语言:javascript
运行
复制
NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleKeyboardWillHideNotification:", name: UIKeyboardWillHideNotification, object: nil)

处理小马车的扳机。

代码语言:javascript
运行
复制
func handleKeyboardWillHideNotification(notification:NSNotification) {
    if (self.isFirstResponder())
    {
        self.resignFirstResponder()
        self.becomeFirstResponder()
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-11-13 18:35:41

我在这里发布了一个示例项目,演示了该bug及其修复:https://github.com/jeremywhuff/HWInputViewBugExample

在iOS8上运行它,您就会看到这个bug。在iOS7上运行它,就不会了。

我添加了一个"hack fix“开关,这将演示修复。当然不理想,但这是我能想到的最好的。它会导致键盘在模拟器上闪烁,但在设备测试期间,这种情况似乎不会发生。

黑客修复可以在applicationDidBecomeActive中找到:

代码语言:javascript
运行
复制
mainView.textView!.becomeFirstResponder()
NSTimer.scheduledTimerWithTimeInterval(0.05, target: mainView.textView!, selector: "resignFirstResponder", userInfo: nil, repeats: false)

这将导致文本视图变成,然后迅速退出第一个响应程序,这似乎将系统踢出其不可见的inputView模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26110837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档