在UIActivityIndi​​catorView旋转时禁用所有输入

时间:2012-03-04 11:43:46

标签: ios cocoa-touch uiactivityindicatorview

如何在UIActivityIndicatorView旋转时禁用所有输入?

由于

4 个答案:

答案 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