objective C用于检测所用设备是否为iPod的方法

时间:2012-02-03 16:43:27

标签: objective-c ios xcode4.2 ipod-touch

我正试图找到一种方法来检测所使用的设备是否是iPod touch,有没有?

我在iPad上使用这种方法......

if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
     ....
}

2 个答案:

答案 0 :(得分:6)

你为什么想知道?如果是因为你想知道是否有相机还是可以拨打电话等,那么你最好通过功能检测(如果苹果公司在某个时候制造带有手机的iPod!),例如Cliff's答案。

如果是出于其他原因并且您确实只是想知道它是iPod还是iPhone,无论实际的设备功能如何,请按照以下方式进行操作:

if ([[UIDevice currentDevice].model isEqualToString:@"iPod touch"])
{
    ...
}

答案 1 :(得分:0)

我过去经常使用的粗略黑客是查询设备是否可以拨打电话#。我忘记了语法,但应该有像

这样的东西
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:+11111"]]) {
  //we have an iphone
} else if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
  //We have an iPad....
} else {
  //We probably have an iPod....
}

老实说,我更喜欢这种方法而不是绝对检测,因为它侧重于设备的功能而不是模型。最好根据设备的功能而不是模型来条件化逻辑,因为您永远不知道将来的iOS设备版本中将引入哪些功能。例如,隐藏视频控件,如果设备类型== iPad在一年多前就已经具有实际意义,但是当iPad2在几个月内推出时会限制其功能。如果您认为仅仅因为设备是iPod,您应该或不应该使用功能X,那么如果添加功能,您将限制产品的进一步版本的功能。