禁用屏幕上当前视图的用户交互

Vin*_*Vin 35 iphone cocoa-touch ipad ios

我的应用程序有很多视图和各自的控制器.现在我有一组带有业务逻辑的模型类.其中一个模型类(NSObject的子类)负责管理安全性.它的目的是监听来自Web服务器的特定指令,如果从服务器到达"禁用"消息,则禁用UI以供进一步使用.

现在,"禁用"消息可以在应用程序运行期间的任何时刻到达,并且任何视图都可以在屏幕上显示.如何确定用户(从我的模型类)可以看到哪个视图并禁用用户交互?

Got*_*chi 110

也许您希望整个应用程序根本不作出反应?

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
Run Code Online (Sandbox Code Playgroud)

使用[[UIApplication sharedApplication] endIgnoringInteractionEvents];恢复这个(学分nerith)

同样适用于Swift:

UIApplication.sharedApplication().beginIgnoringInteractionEvents()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
Run Code Online (Sandbox Code Playgroud)

和斯威夫特3

UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此方法以"级联"方式工作.如果你打电话'开始'10次 - 你也必须打10次'结束' - 这可能是非常好的,或者如果你不知道它可以是一个头脑;) (2认同)