这是我在Apple Developer Forum上发布的内容的复制和粘贴:
我有一个在 iOS 6 中按预期工作的应用程序,但我想使用 iOS 7 的一些新地图功能。当我有第二个屏幕处于活动状态时,我有以下症状:
- 除了“当前位置”标记(第二个屏幕包含 MKMapView)外,第二个屏幕都是黑色的。
- 第一个屏幕上的“当前位置”标记下方有一个黑色(不透明)框。
- 键盘是黑色的,只有几个键显示。
这是第二个屏幕处于活动状态时主屏幕底部的样子:
这是第二个屏幕的样子:
这是第二个屏幕不活动时第一个屏幕的样子:
第二个屏幕在我的 App Delegate 中被激活。这是处理该问题的代码:
NSUInteger screenCount = [[UIScreen screens] count];
if( screenCount > 1 )
{
self.extScreen = [[UIScreen screens] objectAtIndex:1];
self.availableModes = [self.extScreen availableModes];
self.extScreen.currentMode = [self.availableModes lastObject];
self.extScreen.overscanCompensation = UIScreenOverscanCompensationInsetBounds;
// Size of window has changed
if( self.extWindow == nil || !CGRectEqualToRect( self.extWindow.bounds, [extScreen bounds] ) )
{
self.extWindow = [[UIWindow alloc] initWithFrame:[self.extScreen bounds]];
self.extWindow.screen = self.extScreen;
}
CGRect masterFrame = [self.extScreen bounds];
self.contentView = [[UIView alloc] initWithFrame:masterFrame];
self.ssMapView = [[SSMapView alloc] init];
[ssMapView drawInView:self.contentView];
self.contentView.clipsToBounds = YES;
[self.extWindow addSubview:contentView];
[self.extWindow makeKeyAndVisible];
}
对于我的生活,我无法弄清楚为什么第二个屏幕是黑色的,更令人费解的是,为什么第二个屏幕的存在会影响键盘的外观和第一个屏幕上的当前位置标记?
如果有人对我应该去哪里有任何线索,我将不胜感激。如果有人认为它相关,我会发布更多代码。
此外,这些代码都不是特定于 iOS 7 的,因此我不会在此处发布任何属于 NDA 的内容。您在下面看到的 100% 来自一个正常工作的 iOS 6 应用程序,该应用程序按预期退出工作,而为 iOS 7 编译是唯一的区别。