繁体   English   中英

当用户未连接到互联网时,如何禁用所有UIViewController的用户交互?

[英]How to disable user interaction for all UIViewControllers when user is not connected to the internet?

我知道如何检查用户是否连接到互联网: https : //stackoverflow.com/a/39782859/9735046
如果用户未连接到互联网,如何禁用所有UI View Controller的用户交互?

好吧,我必须指出,从UX的角度来看,阻塞整个UI并不是一个好主意:)

也就是说,阻止交互的一种普遍应用的解决方案是模态地显示某种弹出窗口,直到操作完成(或者,在您的情况下,重新确定可达性)。 此弹出窗口至少可以向用户显示发生了什么情况(“请等待,没有可用的互联网连接”或类似的提示)。

最简单的解决方案是只使用不带按钮的UIAlertViewController CocoaPods也有很多不错的组件。

我已经为此制作了一个屏幕,当Internet断开时它将推送当前的导航堆栈,而当Internet连接时我会弹出该屏幕,并显示最后一个导航堆栈的顶部Viewcontroller

只需将此代码放在您的Appdelegate didFinish启动方法中

AFNetworkReachabilityManager.shared().startMonitoring()

    AFNetworkReachabilityManager.shared().setReachabilityStatusChange
        { (status: AFNetworkReachabilityStatus) -> Void in

            if ((status == .notReachable) && ! 
(self.mainNav.topViewController is InternetViewController))
            {
                let internetVC:InternetViewController = storyboard.instantiateViewController(withIdentifier: "InternetViewController") as! InternetViewController

                self.mainNav.pushViewController(internetVC, animated: true)
            }
            else if ((status != .notReachable) && (self.mainNav.topViewController is InternetViewController))
            {
                self.mainNav.popViewController(animated: true)
            }
    }

通过此代码,您可以实现这种结果,并且看起来更加专业和用户友好,如果禁用UIView,并且用户现在知道互联网已断开连接,则用户可以轻松地知道互联网已关闭,他认为您的应用程序已卡死

在此处输入图片说明

只需显示NoInternetView并显示标签“ No internet connection”和按钮“ Try again”。 如果存在连接,请隐藏视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM