关闭UIScrollView下的模式视图更改

fis*_*ear 9 iphone modal-dialog uiscrollview ios

我必须在这里找到一些基本的东西.我打开了一个UIScrollView,它由客户UIScrollViewController(称为DataController)控制.在某个时间点,需要用户输入,所以我从DataController打开一个模态UIViewController:

ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil];
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.theDelegate = self;
[self presentModalViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

一旦用户准备好模态视图,它将再次被解除.这也发生在DataController中:

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

一切正常.但是当模态视图消失时,事实证明底层的UIScrollView被调整为全屏,并滚动到位置(0,0).即使是简单的模态视图也是如此,除了被忽略之外什么都不做.显然,我希望UIScrollView保持与模态视图出现之前相同的状态和大小.

我有什么想法我做错了吗?

我在设置UIScrollView框架时检查了堆栈跟踪(通过自定义UIScrollView的setFrame中的断点),看起来它是从以下位置调用的:

-[UITransitionView transition:fromView:toView:]
Run Code Online (Sandbox Code Playgroud)

通过dismissModalViewControllerAnimated调用来调用via.

Eri*_*eaf 1

-[UITransitionView transition:fromView:toView:]
Run Code Online (Sandbox Code Playgroud)

从模式转换回视图是完全正常的。这是动画等,如果您认为这可以产生影响,请尝试使用动画模式。

看看你的viewWillAppear, WillDisappear,DidAppear... 甚至LoadUnload如果合适的话,尽管不太可能在模态中没有任何内容的情况下要求你进行琐碎的测试。尝试在这些方法中放置一些日志记录以查看调用了哪个方法。

您还说这些方法中没有自定义代码,或者您的控制器根本不覆盖它们?可以有所作为。