ModalViewController не отображается во время анимации при прокрутке с прокруткой
Мое приложение имеет прокручиваемый вид прокрутки. Каждая страница прокрутки имеет экземпляр контроллера представления (buttonViewController), который показывает сетку кнопок. Если пользователь нажимает на одну из кнопок, buttonViewController запускает detailViewController модально с анимацией, установленной на YES.
Если я просматриваю первую страницу (крайняя слева) или вид прокрутки, все работает правильно. Однако, если я прокручиваюсь на любую другую страницу, анимация модального вида (в данном случае скользящая снизу) не появляется. Вместо этого весь вид становится черным в течение того же периода времени, что и анимация, и тогда контроллер модального вида отображается полностью отображенным. То же самое происходит при отклонении модального контроллера представления.
Код полностью стандартный. В моем buttonViewController я звоню:
[self presentModalViewController:detailController animated:YES];
Один и тот же код выполняется независимо от того, какую страницу я просматриваю (хотя, конечно, на разных экземплярах buttonViewController).
Как бы я начал отлаживать это?
2 ответа
Это может быть связано с фреймом detailController... Когда вы находитесь в UIScrollView, первая страница находится в диапазоне от 0 до 320, однако, когда вы прокручиваете это смещение с шагом, поэтому (при условии, что у вас есть полноэкранные страницы) следующее представление будет 320 и 640, следующий будет в 640 и (640+320), и так далее, и так далее. Поэтому, когда вы настраиваете свой detailController с фреймом CGRectMake(0,0,320,460), когда вы находитесь на первой странице, анимация будет выглядеть хорошо, но когда вы находитесь на любой другой странице, анимация будет происходить в (0,0) и затем я предполагаю, что контроллер вида видит, что это не активный экран, и перемещает контроллер модального вида туда, где находится активный экран. Если вы инициализируете свой фрейм, как этот CGRectMake(320*pageNumber,0,320,460), я думаю, у вас будет нужное поведение, которое вы ищете. Дайте мне знать, если это работает, мне любопытно.
Вам нужно вставить UIView (или любой вид, например, UIScrollView) в представление, которое вы пытаетесь анимировать, чтобы анимация работала правильно. Я думаю, это потому, что вы предоставляете представление, на котором основана анимация.