4

デバイス(元の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

私は何か間違ったことをしていますか?

4

2 に答える 2

10

ドキュメントを理解しているのでmirroredScreen、実際にはミラーリングされた画面であるセカンダリ画面でプロパティにアクセスする場合は、メイン画面を参照します。のように:

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

[[UIScreen mainScreen] mirroredScreen]nilmainScreenはそれ自体をミラーリングしないため、常に戻ります。

于 2011-04-04T18:17:55.317 に答える
3

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.
    }
}
于 2011-04-20T12:30:10.197 に答える