Отклонить модальное представление изменений, лежащих в основе UIScrollView - PullRequest
9 голосов
/ 24 августа 2011

Должно быть что-то базовое, чего мне здесь не хватает. У меня есть открытый UIScrollView, который контролируется клиентским UIScrollViewController (называется DataController). В определенный момент времени требуется ввод данных от пользователя, поэтому я открываю модальный UIViewController из DataController:

ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.theDelegate = self;
[self presentModalViewController:viewController animated:YES];

Когда пользователь готов к модальному виду, он снова закрывается. Это также происходит из DataController:

[self dismissModalViewControllerAnimated:YES];

Это все отлично работает. Но когда модальное представление исчезло, оказалось, что базовый UIScrollView изменен в полноэкранном режиме и прокручен в положение (0,0). Это имеет место даже с простым модальным представлением, которое не делает ничего, кроме как быть отклоненным. Очевидно, я хочу, чтобы UIScrollView оставался в том же состоянии и размере, в каком он был до появления модального представления.

Есть идеи, что я делаю не так?

Я проверил трассировку стека, когда установлен кадр UIScrollView (через точку останова в setFrame: пользовательского UIScrollView), и кажется, что он вызывается из:

-[UITransitionView transition:fromView:toView:]

, который вызывается via, via из вызова dismissModalViewControllerAnimated.

1 Ответ

1 голос
/ 21 сентября 2011
-[UITransitionView transition:fromView:toView:]

Совершенно нормально для перехода от модального вида к вашему виду. Это анимация и т. Д., Попробуйте модально с анимацией, если вы думаете, что это может иметь значение.

Взгляните на свои viewWillAppear, WillDisappear, DidAppear... Даже Load и Unload, если это уместно, хотя маловероятно, что они требуются для вашего тривиального теста, в модале которого нет ничего. Попробуйте поместить некоторые записи в эти методы, чтобы увидеть, какой из них вызывается.

Также вы говорите, что в этих методах нет пользовательского кода, или ваш контроллер их вообще не перекрывает? Может иметь значение.

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