如何在用户未连接到互联网时禁用所有UIViewControllers的用户交互?

时间:2018-05-19 10:05:54

标签: ios swift xcode

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

3 个答案:

答案 0 :(得分:1)

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

也就是说,阻止交互的一般应用解决方案是在操作完成之前以模态方式显示某种弹出窗口(或者,在您的情况下,重新建立可达性)。这个弹出窗口至少可以向用户显示正在发生的事情(“请等待,没有可用的互联网连接”或类似的东西)。

最简单的解决方案是只使用没有按钮的UIAlertViewController;还有很多很好的组件可用作CocoaPods。

答案 1 :(得分:0)

我已经制作了一个屏幕,当互联网关闭时它将推送当前的导航堆栈,当互联网连接时我会弹出没有互联网屏幕并显示导航堆栈的最后一个顶视图控制器

将此代码放在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,用户可以很容易地知道互联网已关闭,如果用户现在知道互联网已断开连接,他认为您的应用卡住了

enter image description here

答案 2 :(得分:-2)

只需显示带有“无互联网连接”标签的NoInternetView和“再试一次”按钮。如果有连接,请隐藏视图。