Вы не указали, хотите ли вы заблокировать весь доступ к приложению во время выполнения операции или просто хотите отключить tableView. Вот что я делал в прошлом, когда хотел заблокировать весь доступ к приложению:
- Отключить представление приложения.
- Добавьте новый вид сверху с черным фоном, но, возможно, с 0,6 альфа. Сделать это возможно 150x150 с закругленными углами.
- Добавьте UIActivityIndicatorView к черному виду в горизонтальном центре, но немного выше, чем в вертикальном центре.
- Добавьте метку для некоторого текста статуса, чтобы сообщить пользователю, что происходит.
- Когда фоновая задача завершена, удалите представление и снова включите представление приложения.
Это делает приятное "ожидание" пользователя.
РЕДАКТИРОВАТЬ: Вот код, который я использую, чтобы отключить приложение, пока процесс работает в фоновом режиме:
UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) {
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}
[window setUserInteractionEnabled:NO];
Добавлено из предложенного ОП редактирования:
Если по какой-то причине вышеуказанная техника не работает, другие обходные пути:
- Вызов
setExclusiveTouch
на вид, который вы используете, чтобы указать, что он загружается
- Позвонив на
[[UIApplication sharedApplication] beginIgnoringEvents]
и позже позвонив на [[UIApplication sharedApplication] endIgnoringEvents]
, когда мы закончили.