我在应用程序商店中有一个不错的小应用程序,它本身也很好用。直到iOS 5来到城镇,人生才好。现在,我的应用程序存在许多问题,我无法修复,因为我不知道发生了什么,因为我觉得它们是iOS 5问题,而不是我的问题。
我错过了iOS 5转换手册吗?或者他们只是为了好玩而改变一切,并希望我们找出所有复活节彩蛋的位置?
这是我遇到的另一个问题(我已经浪费了太多时间来修复),当我只是说我想在良好的情况下运行应用程序时,它并不存在... 4.2:
模态视图
我的应用是一个简单的读者应用。我有一本书阅读视图,用UIWebView显示文本。我一直在努力的功能之一是能够在阅读时记笔记。这是通过按下按钮并呈现模态视图来实现的。是的,一个模态视图。你可以做的最简单的iOS 5之前的事情。现在,当我解除我的模态视图时,只需点击取消,然后简单地关闭视图,当我回到我的读者视图时,顶部的导航栏被推到屏幕的一半!这不会发生在4.2中,但它存在于iOS 5中!
如何解决此问题?
感谢您的帮助。
答案 0 :(得分:2)
好的,我只是能够弄清楚火焰中发生了什么。我将shouldAutorotateToInterfaceOrientation值设置为BOOL变量,这样当modalView返回时,它不知道状态栏的状态/大小。修正了,问题就消失了。
答案 1 :(得分:1)
我觉得这与你呈现和解雇模态观点的方式有关。 Apple推出了一种新方法来呈现视图。你可以尝试使用这些而不是旧的,看看它是否解决了你的问题。
所以这就是你做的:
更改此方法:
presentModalViewController:animated:
进入iOS 5引入的新首选方法:
presentViewController:animated:completion:
具体取决于您是否使用dismissModalViewControllerAnimated:
来关闭视图,请将其更改为dismissViewControllerAnimated:completion
。
这个方法也有完成处理程序,这对于在显示/解除视图后做一些额外的工作非常有用。也许这也有助于你的另一个问题。如果这可能有帮助,请告诉我。
答案 2 :(得分:1)
iOS 5的一个重大变化是不再为模态视图设置UIViewController的navigationController
属性。相反,有一个新的(不存在于iOS 4中)parentViewController
属性。因此,如果您在模态视图中使用navigationController
,则需要将逻辑更改为:
UIViewController* parent;
if ([self respondsToSelector:@selector(parentViewController)]) {
parent = self.parentViewController;
}
else {
parent = self.navigationController;
}
(那是从记忆中来的,所以我不能保证每一个都是点缀的,每一个都是我的。)
答案 3 :(得分:1)
我看到了同样的裁剪问题。
我发现我的问题的原因是我在模态对话框中设置了内容大小(我为我的iPad布局做了一些事情),所以删除这两行似乎解决了这个问题:
CGSize size = CGSizeMake(320, 480); self.contentSizeForViewInPopover = size;
我认为问题已得到解决,但事实并非如此。在仔细检查代码之后,清理构建并重新测试它结果是shouldAutorotateToInterfaceOrientation
,在应用程序加载时,在短时间内(flag == NO
)会返回所有方向的NO (根控制器)。您希望至少将YES返回到一个方向,如下所示:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return !self.flag ? UIInterfaceOrientationPortrait == toInterfaceOrientation : YES;
}