UIScreenMirroredScreen 属性始终返回 nil

发布于 2024-10-29 15:38:39 字数 416 浏览 4 评论 0原文

如果设备(原始 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

我做错了什么吗?

I want to present unique content on the external connected display if mirroring is not supported by the device (original iPad) but want to use screen mirroring if it's iPad 2. Now when I try to code this as follows:

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

[[UIScreen mainScreen] mirroredScreen] always returns nil.

Am I doing something wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

煮茶煮酒煮时光 2024-11-05 15:38:39

据我了解文档,如果您访问实际上是镜像屏幕的辅助屏幕上的属性,mirroredScreen 将引用主屏幕。如:

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

[[UIScreen mainScreen]mirroredScreen] 将始终返回 nil,因为 mainScreen 不会镜像自身。

As I understand the documentation, mirroredScreen will reference the main screen if you access the property on a secondary screen that actually is the mirrored screen. As in:

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

[[UIScreen mainScreen] mirroredScreen] would then always return nil because the mainScreen does not mirror itself.

緦唸λ蓇 2024-11-05 15:38:39

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.
    }
}

Apple have a recommendation about the way to detect if the screen is mirrored or not here : 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.
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文