如何在没有网络时阻止iOS Swift,任何最佳实践



我想在没有网络连接时阻止应用的 UI。

我该怎么做?

创建阻塞宽屏透明视图

在需要时将其移动到前面以阻止 UI 触摸?

网络恢复时将其移动到后面?

在快速实施中是否有最好的用户体验实践?

与其执行所有这些操作,不如禁用该特定视图的用户交互。像下面一样

[self.view setUserInteractionEnabled:NO];
self.view.userInteractionEnabled = false //swift implementation

这将禁用该视图的所有子视图的用户交互

如果当前显示的视图控制器中没有处理互联网连接的代码

UIApplication.sharedApplication().keyWindow.rootViewController.view.userInteractionEnabled = false

这并不理想,但我有基于Nanayakkara项目的解决方案。AppDelegate 创建MyConnectionManager networkStatusChanged选择器上观察到:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("networkStatusChanged:"), name: ReachabilityStatusChangedNotification, object: nil)
Reach().monitorReachabilityChanges()

每次更改连接状态时,经理都会呼叫networkStatusChanged并检查连接是否丢失,顶部视图不是特殊的连接视图,并带有"请检查您的互联网连接"之类的消息。如果不是管理器从sharedApplication中检索顶部控制器

func topController() -> UIViewController? {
    if var topRootController =
        UIApplication.sharedApplication().keyWindow?.rootViewController {
            while((topRootController.presentedViewController) != nil) {
                topRootController = topRootController.presentedViewController!
            }
            return topRootController
        }
        return nil
    }

并用ConnectionViewController调用presentViewController.

最新更新