升级到MonoTouch 6后自动旋转退出工作

时间:2013-01-25 15:05:14

标签: ios xamarin.ios uikit xamarin screen-rotation

我使用MonoTouch 5制作了一个项目。升级到MonoTouch 6后,我的UIViewControllers不再自动旋转了。它们托管在tabviewcontroller中。我收到了这个警告:

ShouldAutorotateToInterfaceOrientation(MonoTouch.UIKit.UIInterfaceOrientation)' overrides obsolete member `MonoTouch.UIKit.UIViewController.ShouldAutorotateToInterfaceOrientation(MonoTouch.UIKit.UIInterfaceOrientation)'. Add the Obsolete attribute to ShouldAutorotateToInterfaceOrientation(MonoTouch.UIKit.UIInterfaceOrientation)' (CS0672) 

但是我在调​​试时仍会调用该方法。永远不会调用新的ShouldAutorotate。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

可能有几个原因。其中之一是你应该(如果还没有)在AppDelegate中设置RootViewController(另一个链接here)。在iOS6之前不需要这样做。

另一个开始使用新的iOS6 API,而没有为早期的iOS版本保留回退。这符合您的评论,即适用于6.0但不适用于5.1

请注意,由于您仍然定位iOS 5.x,因此可以安全地ignore过时的警告。 iOS 6引入了新的API来处理轮换,但它将自动回退到旧API,以保持与现有应用程序的兼容性。

这也意味着如果您开始使用新的(仅限iOS6)API,那么您需要自己处理旧API ,或者旋转不适用于iOS 5.x

老实说,我认为这是一个测试的噩梦 - 你最好让iOS处理这个并保持一个代码路径来处理轮换。这就是为什么我强烈建议您继续使用旧API,直到您的部署目标最小版本变为iOS 6.0。

答案 1 :(得分:0)

升级后我遇到了同样的问题,我得到了问题over here的答案。这是问题的核心,引自链接:

  

应用程序窗口应在应用程序启动结束时具有根视图控制器

     

所以,如果以前像我一样,你在main.cs中的FinishedLaunching(UIApplication应用程序)方法中有这个:

     

window.AddSubview(mainVC.View);

     

替换为:

     

window.RootViewController = mainVC;

就是这样!快乐的时光!轮换再次工作。 :)至少它解决了我的问题。

我不知道导致应用程序出错的这个小问题是Apple的错还是Monotouch / Xamarin的错,但我认为Xamarin团队应该对此做些什么。当然这可以在编译时检测和纠正吗?

反正。希望这些信息可以为其他人节省这个问题花费我的时间!