我正在为iphone和ipad编写通用应用程序。如何确定设备是否为iPad。我使用此链接来确定iPhone类型(3G,3GS)。
答案 0 :(得分:33)
强烈建议您不要使用设备类型检测来确定应用程序是否在iPad上运行,而是要检查功能或用户界面惯用语。许多针对特定设备类型进行测试的应用程序在新硬件出现时会中断(这往往非常频繁)。
通常,如果您需要确定某个应用程序是否在iPad上运行,那是因为您需要调整用户界面以匹配设备的较大显示区域。为此,Apple建议您使用以下代码检查用户界面习语:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
// iPad-specific interface here
}
else
{
// iPhone and iPod touch interface here
}
答案 1 :(得分:4)
布拉德的解决方案是绝对正确的。如果您正在构建一个通用应用程序,该应用程序设计为在具有较旧操作系统的iPhone以及最新的iPad和iPhone上运行,您可能需要添加此代码以捕获未定义成语的情况。
// If iPhoneOS is 3.2 or greater then __IPHONE_3_2 will be defined
#ifndef __IPHONE_3_2
typedef enum {
UIUserInterfaceIdiomPhone, // iPhone and iPod touch
UIUserInterfaceIdiomPad, // iPad
} UIUserInterfaceIdiom;
#define UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPhone
#endif // ifndef __IPHONE_3_2
答案 2 :(得分:2)
这是我得到的最佳答案:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
//iPhone methods
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//iPad methods
}
答案 3 :(得分:1)
试试这个
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
else
{
//iphone
}
答案 4 :(得分:0)
if ( [(NSString*)[UIDevice currentDevice].model isEqualToString:@"iPad"] ) {
NSLog(@"...in iPad");
} else {
NSLog(@"...in iPhone/iPod");
}