我使用UITabBarController作为根控制器,每个TabBarItem都有自己的UINavigationController,第一个UITabBar(0)引用UIViewController,它显示服务器的结果。第五个UITabBar(4)包含MoreFormViewController(它是Eureka框架中FormViewController的后继者),它有几个单元格(目前有两个单元格实现)。单击其中一个打开SettingsFormViewController(这是来自Eureka框架的FormViewController的后继者),第一个单元格包含UISlider,它更改从服务器获取数据的设置(显示在UITabBar(0)中)。如果此参数更改,那么当我们返回到MoreFormViewController时,我们会自动转换到UITabBar(0)。如果您再次从UITabBar(0)快速切换到MoreFormViewController并打开SettingsFormViewController,应用程序将被冻结。发现以下内容,此时初始化了SettingsFormViewController并触发了所有生命周期方法(viewDidLoad,viewWillAppear,viewDidAppear等)。但是屏幕不可见,然后我看了Xcode中的UI View层次结构,它显示第一个控制器是应该是的SettingsFormViewController。这一次我检查了一个真正的iPhone 7,然后我决定检查模拟器和iPhone 5,他们没有发现这样的错误,一切正常。在下一次测试中,当应用程序在iPhone 7上“冻结”时,我意外地将其折叠并展开它,我看到了这个屏幕,它完全有效。但是如果你重复同样的动作,那么应用程序再次“冻结”。
我一直在寻找有关这方面的信息,但最多我发现人们只是“冻结”了应用程序,因为他们正在将控制器推出主线程。所以我不知道该怎么办。你能告诉我如何解决这个问题吗?
另外,我尝试用带滑块的常规UIViewController替换SettingsFormViewController,结果是一样的。即使在第三方框架中也删除了所有地方isUserInteractionEnabled = false,以确切地知道什么不是问题。