【发布时间】:2012-02-26 06:40:44
【问题描述】:
我正在尝试寻找一种方法来检测所使用的设备是否是 iPod touch,有吗?
我在 iPad 上使用这种方法...
if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
....
}
【问题讨论】:
标签: objective-c ios xcode4.2 ipod-touch
我正在尝试寻找一种方法来检测所使用的设备是否是 iPod touch,有吗?
我在 iPad 上使用这种方法...
if (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
....
}
【问题讨论】:
标签: objective-c ios xcode4.2 ipod-touch
我过去利用的一个粗略的技巧是查询设备是否可以拨打电话#。我忘记了语法,但应该有类似
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 功能,那么如果添加该功能,您将在产品的进一步版本中限制功能。
【讨论】:
你为什么想知道?如果是因为您想知道是否有相机或可以拨打电话等,那么您最好通过功能检测来执行此操作(以防Apple在某些时候制作带有电话的iPod!)例如Cliff's回答。
如果是出于其他原因,而您确实只是想知道它是 iPod 还是 iPhone,无论实际设备功能如何,您都可以这样做:
if ([[UIDevice currentDevice].model isEqualToString:@"iPod touch"])
{
...
}
【讨论】: