Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 这是检测iPad的正确方法吗?_Objective C_Ipad_Ios - Fatal编程技术网

Objective c 这是检测iPad的正确方法吗?

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习惯用法

我可以使用以下代码检测我的应用程序是否在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(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声称是这种情况下的手机。