【问题标题】:Does UI_USER_INTERFACE_IDIOM work with Targeted Device FamilyUI_USER_INTERFACE_IDIOM 是否适用于目标设备系列
【发布时间】:2011-03-11 05:04:42
【问题描述】:

所以我目前正在使用 UI_USER_INTERFACE_IDIOM 和 [[UIDevice currentDevice] model] 来检查我使用的是 iPhone、iPod 还是 iPad。我发现在 iPad 模拟器 3.2 中,UI_USER_INTERFACE_IDIOM 仍然评估为 UIUserInterfaceIdiomPhone (iPhone)。

我想知道这是否与我的目标设备系列设置有关。我只为我的应用程序定位 iPhone(我不想制作一个具有缩放视图的通用应用程序)。但是,我支持 3.2 SDK,所以我仍然希望拥有 iPad 的用户能够运行我的 iPhone 应用程序。 即使我的目标是 iPhone,UI_USER_INTERFACE_IDIOM 在 iPad 上的评估是否正确?

【问题讨论】:

    标签: iphone ipad ios-simulator


    【解决方案1】:

    正如人们所说,检查个人能力。

    要拨打电话,请执行此操作

    // Only show the button if its is a device capable of making calls
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:"]]) {
        self.Button.hidden = NO;
    } else {
        self.Button.hidden = YES;
    }
    

    【讨论】:

      【解决方案2】:

      我能提供的最好的方法是在 iPad 模拟器 (3.2) 上以“iPhone”模式运行时

      NSLog(@"model : %@", [UIDevice currentDevice].model);
      

      返回

      model : iPhone Simulator
      

      (请注意:我只为“iPhone”构建,因此在 iPad 上运行 iPhone 体验。我必须假设返回的“模型”名称受此影响)

      【讨论】:

        【解决方案3】:

        UI_USER_INTERFACE_IDIOM 检查设备是 iPhone 还是 iPad。它检查的是用户界面是处于 iPhone 模式(1x/2x 的东西)还是 iPad 模式。

        如果应用程序未配置为以 iPad 为目标,它将始终返回 UIUserInterfaceIdiomPhone,因为 UI iPhone 应用程序。这是设计的功能。

        即使应用程序配置为仅针对 iPhone,只要您使用记录的方法,iPad 应该能够毫无问题地运行它。

        (如果您需要特定于 iPad 的功能,不要检查设备是否真的是 iPad。而是检查个人功能。)

        【讨论】:

        • 我正在尝试根据设备的呼叫功能确定是否将电话号码链接到电话操作。我可以使用一种方法或宏来确定这一点吗?
        • @unjust:您可以弱链接到 CoreTelephony(我假设您正在使用 CT),然后检查某些类,例如CTCall 使用 NSClassFromString 存在。
        • [[UIDevice currentDevice] model] 会以 iPad 的形式出现吗?我正在尝试确保只有 iPad 可以自动旋转。
        猜你喜欢
        • 2023-03-24
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-26
        相关资源
        最近更新 更多