ios – 如何在解除键盘后恢复UIInputViewController self.view?

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

在这一点上,我希望当我回到键盘回到例如笔记时,我会收到以前的UIInputViewController和我已经构建的视图.

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

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

我正在调查restoreIdentifier来完成这个任务,如果我错了,请纠正我,但是它与普通的UIViewController一起使用,并且不能与UIInputViewController一起使用,因为我的AppDelegate不负责启动它.

更新

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

>使用Notes应用程序中的“完成/返回”按钮.
>切换到消息应用程序并在那里使用键盘.
>使用“切换键盘”按钮

在其他场景中,UIInputViewController类总是通过init方法.

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

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

点赞