Отключить все входные данные, в то время как вращение UIActivityIndicatorView
Как отключить все входные данные, когда крутится UIActivityIndicatorView
?
Спасибо
Ответы
Ответ 1
Вы можете вызвать beginIgnoringInteractionEvents
, когда вы запустите spinner
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
и endIgnoringInteractionEvents
, когда вы остановите его.
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
Просто убедитесь, что ваш код всегда подходит к точке, где вы вызываете endIgnoringInteractionEvents
, иначе ваше приложение замерзнет (с точки зрения пользователей).
Ответ 2
Просто добавление к ответу rokjarc.
Вот пример сторожевого пса, чтобы сохранить приложение в живых.
Вы можете звонить всегда с некоторым критическим интервалом, может быть, 10 секунд.
И если вам нужно включить в течение 10 секунд, просто вызовите метод "enable".
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
В Swift 3.0:
Чтобы отключить взаимодействие:
UIApplication.shared.beginIgnoringInteractionEvents()
Чтобы восстановить взаимодействие:
UIApplication.shared.endIgnoringInteractionEvents()