当我运行模拟器时,程序不会将设备识别为iPad

时间:2014-04-24 14:55:28

标签: ios iphone objective-c ipad

我想在运行我的应用程序的设备是iPad时加载一个不同的viewcontroller,并且想在模拟器中测试它(显然)。我在网上查询了如何判断运行应用程序的设备是否是iPad,但它似乎没有起作用。以下示例。

当我在Xcode中将设备设置为iPad并运行它时,以下代码(在我的appdelegate.m文件中)应打印“识别为ipad!”在日志中,但不是:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
    NSLog(@"recongnized as ipad!");
}

其次,我有一些代码可以打印正在使用的设备的高度(再次在我的appdelegate.m文件中)

CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;
NSLog(@"device height is %f", iOSDeviceScreenSize.height);

然而,当将设备设置为iPad时,它表示高度为480,这是iPhone 4的高度,而不是iPad。我究竟做错了什么?我只想在我的appdelegate.m文件中编写一个if语句,如果该设备是iPad,则启动一个不同的viewcontroller!谢谢!

1 个答案:

答案 0 :(得分:0)

如果您在iPad上运行仅限iPhone的应用程序,则

UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad不会返回YES,因此它必须位于通用应用程序中。但是,这是区分iPad和其他产品的推荐方法。如果您的应用仅限iPhone,那么您应该没有充分理由要检查iPad。

如果您真的希望在没有使应用程序具有通用性的情况下工作,可能出于测试目的,您可以使用以下字符串并查看它是否包含"iPad"

    NSString *device = [[UIDevice currentDevice] model];

请记住,如果Apple决定更改模型字符串,这种方法可能会中断。因此,如果您决定提交应用,我建议不要使用它。