在 iOS 应用程序的 SVProgressHUD 中禁用用户交互不起作用

Posted

技术标签:

【中文标题】在 iOS 应用程序的 SVProgressHUD 中禁用用户交互不起作用【英文标题】:Disabling user interaction not working in SVProgressHUD on iOS app 【发布时间】:2014-03-14 04:32:52 【问题描述】:

我刚刚下载了 SVProgressHUD 并将其合并到我的项目中,如 github 文档页面中所述,但即使我写出 [SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeGradient];,它也与默认掩码类型没有什么不同,当我点击屏幕时光标在旋转我的应用程序崩溃了——这意味着我无法禁用用户交互功能,因为我的应用程序在显示所有表格视图单元格之前就崩溃了。

请注意,clearblack 掩码类型也不起作用。

那么如何才能成功禁用用户交互呢?还有AppDelegate.mapplicationDidFinishWithLaunchingOptions:FirstViewController.viewDidLoad:的哪个文件应该写上面的代码?

我使用最新版本的SVProgressHUD 并使用 Xcode 5.1 和 ios 7.1。我也使用ARC。我错过了什么吗?

[更新]

这是一个错误问题,已在当前版本中解决。在Github page 上查看以获取更多信息。

【问题讨论】:

【参考方案1】:

这是很晚的回答,但以防万一它可以帮助某人,因为我今天被这个问题困扰了一段时间。如果您使用的是来自 github 的最新类,则不会遇到任何问题,但如果您使用的是旧类,请替换 SVProgressHUD.m 中的以下方法,如下所示

+ (void)showWithStatus:(NSString *)status 
     
     [self setDefaultMaskType:SVProgressHUDMaskTypeGradient];
     [self showProgress:SVProgressHUDUndefinedProgress status:status];
  

【讨论】:

【参考方案2】:

我将 SVProgressHUD 与 swift 和 iOS 10.2 一起使用。只是设置掩码类型

在 AppDelegate 中

SVProgressHUD.setDefaultMaskType(.black) 有效。

每次你写的时候

SVProgressHUD.show()

它将显示掩码,并且 userInteraction 由它管理。

【讨论】:

【参考方案3】:

你没有错过任何东西。 iOS 7 似乎不尊重掩码类型,因此永远不会禁用用户交互。我认为这是 SVProgressHUD 的错误,而不是其他任何错误。真的有点沮丧。

【讨论】:

谢谢。刚刚在 iOS 7.1/Xcode 5.1 中的 Github 上发现了同样的问题。希望它得到修复... 你能检查一下吗***.com/questions/30642980/…【参考方案4】:

可以通过在SVProgressHUD 类中进行一些更改来轻松完成: 只需将[self.window setUserInteractionEnabled:NO]; 放在showprogress with status 的最后,然后将[self.window setUserInteractionEnabled:YES]; 放在dismiss 方法中。

【讨论】:

【参考方案5】:

目标 C (AppDelegate.m)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    //add this line
    [SVProgressHUD setDefaultMaskType: SVProgressHUDMaskTypeBlack];

【讨论】:

以上是关于在 iOS 应用程序的 SVProgressHUD 中禁用用户交互不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在共享扩展中使用 SVProgressHUD

如何测试 SVProgressHud 显示的文本?

IOS最新好用的框架推荐 2014-10-29

IOS比较常用的第三方及实例

导入文件不可用时如何避免崩溃?..IOS 7

SVProgressHUD 在显示另一条消息后不显示