应用程序状态更改时禁用 UI 的标准方法
Posted
技术标签:
【中文标题】应用程序状态更改时禁用 UI 的标准方法【英文标题】:A standard approach for disabling UI when application state changes 【发布时间】:2012-07-26 16:32:49 【问题描述】:我有一个 ios 应用程序,该应用程序与通过扩展坞连接器连接的外部附件一起工作。在使用应用程序的过程中,设备可能会断开连接。
我们有一个使用相同设备的 Windows 应用程序,当发生类似情况时,会在部分不透明的白色背景上显示“设备已断开连接”(因此视图仍然显示)。当设备重新插入时,消息消失。
这样的方法在 iOS 上是否合适,或者是否有处理这种情况的标准方法?
【问题讨论】:
【参考方案1】:如果应用程序在没有连接设备的情况下无法运行,我无法理解为什么 Apple 会反对警告并阻止 UI。
我不会完全阻止 静态 UI,以免给人以挂起应用程序的印象。您可以添加一些简单的动画或添加info
按钮来避免它。
有两种选择:
单窗口应用程序简单,有点脏,实现速度非常快:
在应用程序上添加拦截器视图
key window
不依赖于 Windows 的使用,干净,不那么快,并且可能难以保持井井有条
使用此类功能分别扩展您的导航视图控制器(UINavigation 控制器或 UITabBarController)或每个视图控制器。
【讨论】:
我更多地考虑了#2。应用程序中的某些视图需要设备在线才能使用,而其他视图可以独立于设备使用。这是一个选项卡式应用程序,用户仍然可以随时导航到其他视图。 @rhooligan 你的意思是它完全取决于所选的选项卡,并且没有选项卡的内容在没有连接设备的情况下部分可用? 应用中有 3 个标签。每个选项卡都有多个视图。其中两个选项卡仅在连接附件时才有用。 @rhooligan 那么很容易 a) 让 viewControllers 注册您的通知或 b) 让单个deviceManagerConnection
完成接收通知和更新选项卡的工作。重要的是不要忘记在viewWillAppear
进行额外的状态检查。使用#a,您可以使用该属性来存储重叠视图并为不同的控制器提供不同的视图,对于#b,使用标记识别它的相同重叠视图更容易。我不确定这些方法最初是否与方向变化兼容,需要检查。
感谢您的信息。我已经在基础 ViewController 上为各种附件视图实现了几个名为 disableView 和 enableView 的方法。似乎效果很好,因为如果重新启用该附件,用户可以回到他们正在做的事情。以上是关于应用程序状态更改时禁用 UI 的标准方法的主要内容,如果未能解决你的问题,请参考以下文章