解雇键盘后如何恢复UIInputViewController self.view?

时间:2015-04-21 13:24:49

标签: ios swift uiview keyboard uiinputviewcontroller

我正在开发一个具有键盘扩展名的应用程序,在某些键盘扩展程序的使用中(例如:当我使用切换键盘按钮时),扩展程序将通过 viewDidDisappear 并在这种情况我知道我可以清理键盘,并且它已经被释放了所有它的视图并释放了内存。在其他用途​​(例如:使用Notes应用程序并按下完成/返回按钮时),扩展程序将通过 viewWillDisappear 但不通过 viewDidDisappear ,所以在此case我没有清理键盘,因为它没有达到我的清洁方法,因此它没有被取消分配。

此时我希望当我返回到键盘时返回到音符,例如我将收到之前的 UIInputViewController 和我已构建的视图。

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

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

我正在调查 restorationIdentifier 来完成此任务,如果我错了,请更正我,但这与普通的 UIViewController 一起使用,不能用于 UIInputViewController ,因为我的AppDelegate不负责启动它。

更新

根据我的进一步研究,我得出结论,无论你做什么操作:

  1. 使用Notes应用程序中的“完成/返回”按钮。
  2. 切换到消息应用并在那里使用键盘。
  3. 使用“切换键盘”按钮
  4. 在其他场景中, UIInputViewController类总是通过init方法

    根据我对面向对象编程的理解,这意味着无论谁将我的键盘调用到收割机,都会使用构造函数进行操作,并且基本上会创建一个新的键盘实例。这意味着我将永远不会在任何行为中首次重新出现键盘的可用视图,我总是必须为新实例构建键盘视图并清理旧实例。 这是对的吗?或者有一种方法来预先确定UIInputViewController的视图?

1 个答案:

答案 0 :(得分:2)

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