блокирование взаимодействия пользователя с базовыми представлениями - PullRequest
7 голосов
/ 01 сентября 2011

В моем приложении у меня есть представление наложения, которое отображается, когда происходит некоторая обработка и работа в сети.Это просто полупрозрачное представление (подкласс UIView) с индикатором загрузки, которое заполняет весь экран.

Я хочу запретить любому из базовых представлений получать взаимодействие с пользователем (например, базовое представление таблицыне прокручиваться, кнопка не должна быть нажата).

Как лучше всего это сделать в режиме наложения?

Ответы [ 4 ]

10 голосов
/ 01 сентября 2011

Просто установите для свойства userInteractionEnabled для наложения вид YES. Это приведет к тому, что все события касания произойдут в режиме наложения и не будут переданы в базовые виды.

4 голосов
/ 01 сентября 2011

Просто установите для свойства userInteractionEnabled вашего полупрозрачного вида наложения значение YES.

2 голосов
/ 16 ноября 2014

Я думаю, что лучше всего использовать эти 2 метода:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

прямо перед выполнением тяжелых операций обработки и после их завершения соответственно.

1 голос
/ 01 сентября 2011

Просто убедитесь, что для оверлейного представления и всех его родительских представлений userInteractionEnabled не установлено значение NO, они не скрыты и не имеют alpha меньше 0,01. Затем прикосновения пользователя будут взаимодействовать с наложением, а не с видимыми за ним видами. Также имейте в виду, что он не будет блокировать взаимодействие в области, которая не покрыта его суперпредставлениями: даже если ваше представление охватывает весь экран, если его родительский элемент имеет размер только 10x10, он будет блокировать взаимодействие только в пределах этой области 10x10, охватываемой его родительским элементом.

Вам также может потребоваться убедиться, что resignFirstResponder вызывается на любом существующем первом респонденте, иначе пользователь все равно сможет взаимодействовать с ним через клавиатуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...