【问题标题】:How to identify iphone , ipad ,ipod touch, iphpne simulator while programming in 3.2 version?3.2版本编程时如何识别iphone、ipad、ipod touch、iphpne模拟器?
【发布时间】:2011-02-05 06:21:27
【问题描述】:

编程时(3.2 版本)无法识别设备型号(iphone、ipad、ipod touch、iphpne 模拟器)。已经尝试使用 UIDevice 类和其他一些方法,但是在连接到 ipad 时无法将模型作为 ipad。每次它都提供 ipad 以外的模型。所以任何人都可以帮助我。谢谢。

【问题讨论】:

  • 一段代码显示您如何尝试获取模型可能会有所帮助。此外,如果您实际上是在模拟器的物理 iPad 上运行。
  • 你用过[UIDevice model]吗?

标签: iphone


【解决方案1】:

我用过这段代码,效果很好:

size_t size;  
sysctlbyname("hw.machine", NULL, &size, NULL, 0);  
char *machine = malloc(size);  
sysctlbyname("hw.machine", machine, &size, NULL, 0);  
NSString *platform = [NSString stringWithCString:machine];  
free(machine);  
return platform; 

来自arstechnica.com

【讨论】:

  • 是的,但恕我直言,这不是公共 API 的一部分,因此您可能会在使用新的 iPhoneOS 版本时遇到问题,或者更糟糕的是,您的应用可能会被拒绝。
  • 不幸的是,你可能是对的......我已经在 App Store 中正在销售的应用程序中使用它,真正的问题可能只是未来的 iPhoneOS 版本......
【解决方案2】:

一般的方法是避免尝试自己猜测设备型号。在大多数情况下(但您没有描述您的原始需求),该框架为您提供 API 中的硬件功能,您不必知道实际使用的是哪些模型。

例如,如果您想知道相机是否可用,则无需签入您的代码 if (model==iphone3G || model==iPhone3Gs)

您只会问类似[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] 之类的问题,它是公共 API 的一部分。

【讨论】:

    【解决方案3】:

    我认为您可能需要检查 [UIDevice userInterfaceIdiom]。在 iPad 或 iPad sim 上,这将返回 UIUserInterfaceIdiomPad。在其他设备或模拟人生中,它将返回 UIUserInterfaceIdiomPhone。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 2011-11-09
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多