如何在UIActivityIndicatorView
旋转时禁用所有输入?
由于
答案 0 :(得分:52)
您可以在启动微调器时调用beginIgnoringInteractionEvents
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
和endIgnoringInteractionEvents
当你停止它时。
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
只需确保您的代码始终到达您endIgnoringInteractionEvents
的位置,否则您的应用会冻结(从用户的角度来看)。
答案 1 :(得分:6)
在Swift 3.0中:
禁用互动:
UIApplication.shared.beginIgnoringInteractionEvents()
恢复互动:
UIApplication.shared.endIgnoringInteractionEvents()
答案 2 :(得分:1)
只是对rokjarc回答的补充。 这里有一个看门狗保持应用程序活着的例子。 你总是可以用一些关键间隔打电话,也许10秒钟。 如果您需要在10秒内启用,只需调用“启用”方法。
UIWindow * __weak mainWindow;
- (void)disableGlobalUserInteractionForTimeInterval:(NSTimeInterval)interval
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
mainWindow = [[[UIApplication sharedApplication] windows] lastObject];
});
[mainWindow setUserInteractionEnabled:false];
if (interval > 0)
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(interval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self enableGlobalUserInteraction];
});
}
}
- (void)enableGlobalUserInteraction
{
if (mainWindow)
{
[mainWindow setUserInteractionEnabled:true];
}
}
答案 3 :(得分:0)
在Swift 5中:
// activity indicator starts
view.isUserInteractionEnabled = false
...
// activity indicator stops
view.isUserInteractionDisabled = true