ios - 关闭键盘后如何恢复 UIInputViewController self.view?

标签 ios swift uiview keyboard uiinputviewcontroller

我正在开发一个具有键盘扩展的应用程序,在键盘扩展的某些用途中(例如:当我使用切换键盘按钮时)扩展正在经历 viewDidDisappear 并在在这种情况下,我知道我可以清理键盘,它的所有 View 都将被解除分配,内存也将被释放。在其他用途​​中(例如:当使用 Notes 应用程序并按下 Done/Back 按钮时)扩展将通过 viewWillDisappear 而不是通过 viewDidDisappear,所以在这个如果我没有清洁键盘,因为它没有达到我的清洁方法,因此它没有被释放。

在这一点上,我希望当我通过回到笔记返回到键盘时,例如我会收到之前的 UIInputViewController 以及我已经构建的 View 。

不幸的是,此时 isViewLoaded() 方法返回 false 并且我的 UIInputViewController 再次通过 loadView 方法,因此再次构建所有再次查看,结果应用程序内存增长,直到在某个时候我到达讨厌的 didReceiveMemoryWarning 方法回调。

我想以某种方式恢复我在首先初始化的 UIInputViewController 中为键盘创建的 View 。有人知道这可能吗?如何实现?

我正在研究 restorationIdentifier 来完成这个任务,如果我错了请纠正我,但这是与普通的 UIViewController 一起使用的,不能与UIInputViewController 因为不是我的 AppDelegate 负责启动它。

更新

根据我所做的进一步研究,我得出一个结论,无论您提交什么操作:

  1. 使用 Notes 应用程序中的“完成/返回”按钮。
  2. 切换到“信息”应用并使用那里的键盘。
  3. 使用“切换键盘”按钮

和其他场景一样,UIInputViewController类总是走init方法

根据我对面向对象编程的理解,这意味着无论谁调用我的键盘来收割它,都使用构造函数来完成它,并且基本上创建一个新的键盘实例。这意味着我永远不会在任何行为中获得关于键盘第一次重新出现的可用 View ,而且我总是必须为新实例构建键盘 View 并清理旧实例。 这是对的吗?还是有办法保留 UIInputViewController 的 View ?

最佳答案

除非您使用自己的自定义应用程序和键盘来存储其先前的实例,否则无法执行此操作。除了您设计的自定义应用程序之外的所有内容,它都超出了您的范围

关于ios - 关闭键盘后如何恢复 UIInputViewController self.view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773505/

相关文章:

swift - 使用泛型和协议(protocol)作为类型参数的区别,在函数中实现它们的优缺点是什么

ios - UIScrollView 不在 UiView 中滚动

ios - Xcode 7.3无法将应用程序安装到iPhone

ios - UIButton 图像不缩放

ios - 仅在按下 uitableviewcell 时显示 View

ios - 界面生成器中 UIView 的边框颜色不起作用?

ios - 确定 `UIView` 是从 XIB 加载还是从代码实例化

ios - NSTimeInterval取绝对值可以吗?

android - 如何在 sencha touch 中为不同的屏幕分辨率添加图像?

ios - 我可以在 Swift 中以编程方式阻止在指定时间(夜间)接收 iOS 推送通知吗