在 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];
,它也与默认掩码类型没有什么不同,当我点击屏幕时光标在旋转我的应用程序崩溃了——这意味着我无法禁用用户交互功能,因为我的应用程序在显示所有表格视图单元格之前就崩溃了。
请注意,clear
或 black
掩码类型也不起作用。
那么如何才能成功禁用用户交互呢?还有AppDelegate.m
的applicationDidFinishWithLaunchingOptions:
和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 中禁用用户交互不起作用的主要内容,如果未能解决你的问题,请参考以下文章