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

Emi*_*Adz 5 keyboard uiview ios swift uiinputviewcontroller

我正在开发一个具有键盘扩展的应用程序,在使用键盘扩展时(例如:当我使用切换键盘按钮时),扩展将通过 viewDidDisappear 在这种情况下我知道我可以清理键盘并且它的所有视图都被释放,并且内存被释放。在其他用途​​中(例如:使用 Notes 应用程序并按“完成/后退”按钮时),扩展程序将通过 viewWillDisappear不通过viewDidDisappear,因此在这种情况下,我不会清洁键盘,因为它是没有达到我的清洁方法,因此它不会被释放。

\n\n

此时,我希望当我通过返回注释返回键盘时,我会收到之前的UIInputViewController以及我已经构建的视图。

\n\n

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

\n\n

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

\n\n

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

\n\n

更新

\n\n

通过进一步的研究,我得出的结论是,无论您进行什么操作:

\n\n
    \n
  1. 使用 Notes 应用程序中的“完成/返回”按钮。
  2. \n
  3. 切换到“消息”应用程序并使用那里的键盘。
  4. \n
  5. 使用\xe2\x80\x9c切换键盘”按钮
  6. \n
\n\n

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

\n\n

根据我对面向对象编程的理解,这意味着无论谁调用我的键盘进行收割,都使用构造函数来执行它,并基本上创建键盘的新实例。这意味着在任何行为中键盘第一次重新出现时我永远不会有可用的视图,并且我总是必须为新实例构建键盘视图并清理旧实例。这是正确的吗?或者有没有办法保留 UIInputViewController 的视图?

\n

Áro*_*czy 3

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