Objective c 这是检测iPad的正确方法吗?
我可以使用以下代码检测我的应用程序是否在iPad上运行吗?我的应用程序需要在iOS 3.0或更高版本上运行Objective c 这是检测iPad的正确方法吗?,objective-c,ipad,ios,Objective C,Ipad,Ios,我可以使用以下代码检测我的应用程序是否在iPad上运行吗?我的应用程序需要在iOS 3.0或更高版本上运行 if([[[UIDevice currentDevice] model] isEqualToString:@"iPad"]){ //Do iPad stuff. } 没有。改为这样做: if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // ... } 在iOS>=3.2上使用UI\u用户界面\u习惯用法
if([[[UIDevice currentDevice] model] isEqualToString:@"iPad"]){
//Do iPad stuff.
}
没有。改为这样做:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// ...
}
在iOS>=3.2上使用
UI\u用户界面\u习惯用法()
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
//device is an iPad.
}
在iOS的早期版本上,您可以返回到您的代码,即:
NSRange ipadRange = [[[UIDevice currentDevice] model] rangeOfString:@"iPad"];
if(ipadRange.location != NSNotFound) {
//Do iPad stuff.
}
这种方法是向前兼容的,因为如果明年苹果发布不同的iPad,型号名称可能会改变,但“iPad”一词肯定会出现在字符串中。要为iOS 3.2及更高版本开发,必须使用定义了UI\u USER\u INTERFACE\u IDIOM()
的更新SDK。它是一个宏,在早期的操作系统版本中,它总是返回UIUserInterfaceIdiomPhone
。如果您使用的是较旧的SDK,您将无法进行特定于iPad的开发,因为您将无法启用iPad目标。今天有一个很好的理由使用currentDevice方法,即使对于5.0+应用程序也是如此:希望在iPad上运行仅限iphone的应用程序时获得一些特殊行为。UIUserInterfaceIdiom声称是这种情况下的手机。