繁体   English   中英

XCode 4.5 iOS 6.0模拟器和旋转问题

[英]XCode 4.5 iOS 6.0 simulator and rotation issues

我已经为iOS 4.2做了应用程序,我正在使用XCode 4.3.3进行开发并使用iPhone 5.1模拟器进行测试,一切正常。 最近我决定测试应用程序在iOS 6.0上运行的方式。 在尝试这个时,我面临两个问题:

  1. 因此,我使用XCode 4.5打开应用程序并在iPhone 6.0 Simulator上运行它。 我有启动应用程序的问题。 XCode只是说:完成在iPhone 6.0模拟器上运行,停止按钮是灰色的(就像应用程序没有运行)和iPhone模拟器只显示黑屏,没有任何反应。 我要CMD + Q吧。 这对我来说是个巨大的问题 ,因为我设法在很多失败之后成功地随机运行应用程序。

  2. 最终,有时,应用程序运行没有问题,我看到模拟器正在运行我的应用程序。 应用程序仅以横向模式进行。 但是当模拟器运行应用程序时,它将保持纵向模式并显示为纵向模式下的横向屏幕设计的应用程序。 我已将支持接口方向设置为两个横向变体,而在Application-Info.plist中也列出了这两个横向方向。

有谁知道发生了什么和可能的解决方案?

提前谢谢了。


[编辑#1:添加了所有输出控制台消息]

控制台消息(对于现在一直存在的问题1)说:

error: failed to attach to process ID 0

[编辑#2:解决第一个问题的小进展]

好的,奇怪的事情正在发生。 为了消除编辑#1中的错误,我做的第一件事是:

在XCode中转到: 产品 - >编辑方案 - >运行[AppName] .app - > Debugger并将其从LLDB更改为GDB

在此之后,编辑#1的错误消失了, 但是出现了新的问题。 现在我运行应用程序后,我在XCode中获取状态消息: 附加到[AppName]并且XCode停留在该操作上。

如果有人给我一个答案,我想说我尝试了以下列表中的所有内容:

  • 转到窗口 - >管理器 - >派生数据 - >删除
  • 转到窗口 - >管理器 - > [ProjectName]并完全删除它,然后重新打开它
  • 重置iPhone模拟器设置
  • 重置iPhone模拟器+清洁构建+退出模拟器+运行项目
  • 退出XCode +重启Mac +重新打开XCode并再次运行应用程序

以及各种这些动作排列。 简单地说,我总是看到这个问题。 发生在我身上的最好的事情是在这个组合中:

只打开XCode而不打开项目 - >转到窗口 - >管理器 - > [ProjectName]并完全删除它 - >退出XCode - >打开iPhone模拟器并重置设置 - >退出iPhone模拟器 - >重启Mac - >重新打开XCode并运行应用

有时在这种情况下,模拟器设法立即运行我的应用程序,这很好。 但是在关闭模拟器并再次从XCode运行应用程序之后(在这两个操作之间没有做任何事情),XCode再次停留在附加到[AppName]并且不会启动我的应用程序的模拟器。

虽然模拟器不会从我的应用程序从XCode开始,但应用程序本身存储在模拟器上,如果我单独运行模拟器并手动启动我的应用程序,应用程序设法启动,但第二个问题我在我的问题描述 - 布局问题。


[编辑#3:XCode版本信息]

我忘了提到我的XCode版本: Xcode Version 4.5(4G144l)


[编辑#4:“解决方案”]

我找到了“解决方案”(我说“解决方案”,因为我还没有在当前的XCode版本中找到一个)。

我刚刚下载了XCode版本4.5(4G182)并且正常运行我的应用程序(没有将调试器更改为GDB)并且除了布局问题之外一切正常,这肯定是因为iOS 6.0与iOS 5相比有所改变。我想这是事实上是解决方案,因为我最初使用的这个版本的XCode将不会被使用,因为它是一些beta版本。

那么,第一个问题解决了,还没有解决布局问题。


[编辑#5:最终解决方案]

好的,第二个问题解决了。 关于我的第二个问题的所有信息,这里是这个链接的答案:http: //yusinto.blogspot.de/2012/08/ios-6-auto-rotate-and-orientation.html

就像我在编辑中说的那样,解决我的第一个问题是将XCode更新为4.5版(4G182) 我的第二个问题的解决方案是替换弃用的iOS 5方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

在iOS 6中引入了2种新方法:

- (NSUInteger)supportedInterfaceOrientations
- (BOOL)shouldAutorotate

之后,应用程序工作正常。

[编辑#1:添加仅支持iOS 5和iOS 6的横向应用的工作示例]

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.
    self.viewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible];

    return YES;
}

MainViewController.m

#pragma mark - Orientation support

- (BOOL)shouldAutorotate {

    return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

- (NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {

    return UIInterfaceOrientationLandscapeLeft;
}

完全删除\\Library\\Application Support\\iPhone Simulator文件夹并从XCode运行模拟器适合我。

现在我可以从XCode运行iOS 6.0 Simulator。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM