码迷,mamicode.com
首页 > 移动开发 > 详细

[iOS] 调用presentViewController和dissmissViewController引起的frame显示错误

时间:2015-11-05 18:26:35      阅读:552      评论:0      收藏:0      [点我收藏+]

标签:

    今天在检测相册(photo+camera)这部分的bug时,发现在长按(long press)照片、录像或点击拍照的图标之后,再返回原来的view(assetTableViewController),该view会显示 错误,会显示一片空白。

   下面现总结我的工作思路和debugging的步骤:

    1. 设断点;在返回的view controller的viewwillappear和viewwilllayoutsubviews这两处设置断点以查看该view的frame大小

    2. 重现bug:长按照片或录像等,当进入该view时在两个端点处看到该view的frame变化了!!

        具体是:会进入viewwilllayoutsubviews函数3次,并在第二次和第三次被改变了,y变成了0.

    3. 跟踪代码并大胆猜测:发现这些返回的操作都同时先后调用了presentViewControllerhe dismissViewController(这个是难点和关键)

        在网上试图找解决方案,未果!之后通过在每个函数之后添加自己之前写的一个webbrowserviewcontroller来进行检测,即将presentviewController这段代码换成webbrowserviewcontroller,然后返回,惊奇地发现没问题了。   

    4. 尝试解决:presentViewController 是UIViewController的方法,它的实现我们没法改变,所以只能从自己的代码下手。首先该view嵌套在另一个view里面,所以尝试用

 一个containerVC = [UIApplication sharedApplication].keyWindow.rootViewController来进行present和dismiss。实验之后发现正确!

    虽然问题解决了,但是还是不知其所以然,希望看官们能参与讨论并提出建议~~

 

[iOS] 调用presentViewController和dissmissViewController引起的frame显示错误

标签:

原文地址:http://www.cnblogs.com/sweet-coffee/p/4939953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!