Свойство UIScreen mirroredScreen всегда возвращает ноль - PullRequest
4 голосов
/ 04 апреля 2011

Я хочу представить уникальный контент на внешнем подключенном дисплее, если зеркалирование не поддерживается устройством (оригинальный iPad), но хочу использовать зеркалирование экрана, если это iPad 2. Теперь, когда я пытаюсь кодировать это следующим образом:

if ([UIScreen instancesRespondToSelector:@selector(mirroredScreen)] && [[UIScreen mainScreen] mirroredScreen] == nil) {
    // Mirroring not supported. Present unique content on external display
}

[[UIScreen mainScreen] mirroredScreen] всегда возвращает nil.

Я что-то не так делаю?

Ответы [ 2 ]

10 голосов
/ 04 апреля 2011

Как я понимаю из документации, mirroredScreen будет ссылаться на главный экран, если вы получите доступ к свойству на дополнительном экране, который фактически является зеркальным экраном. Как в:

if ([[UIScreen screens] count] > 1) {
    UIScreen *secondaryScreen = [[UIScreen screens] objectAtIndex:1];
    NSLog(@"%@", secondaryScreen.mirroredScreen); // will reference the mainScreen
}

[[UIScreen mainScreen] mirroredScreen] будет всегда возвращать nil, потому что главный экран не отражает себя.

3 голосов
/ 20 апреля 2011

Apple рекомендует, как определить, зеркальный экран или нет: http://developer.apple.com/library/ios/#qa/qa1738/_index.html

UIScreen *aScreen;

NSArray *screens = [UIScreen screens];
for (aScreen in screens) 
{
    if ([aScreen respondsToSelector:@selector(mirroredScreen)] 
              && [aScreen mirroredScreen] == [UIScreen mainScreen]) 
    {
        // The main screen is being mirrored.
    }
    else 
    {
        // The main screen is not being mirrored, or
        // you are not running on a compatible device.
    }
}
...