我有一个在iPhone和iPod Touch上运行的应用程序,它可以在Retina iPad上运行,但除此之外需要进行一次调整.我需要检测当前设备是否是iPad.我可以使用哪些代码来检测用户是否在我的iPad中使用iPad UIViewController然后相应地更改了某些内容?
Apple建议使用以下代码检测是在iPad上运行还是在iPhone/iPod Touch上运行:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// The device is an iPad running iPhone 3.2 or later.
// [for example, load appropriate iPad nib file]
}
else {
// The device is an iPhone or iPod touch.
// [for example, load appropriate iPhone nib file]
}
Run Code Online (Sandbox Code Playgroud)
问题是在3.2之前的SDK中没有定义UI_USER_INTERFACE_IDIOM()和UIUserInterfaceIdiomPad.这似乎完全打败了这种功能的目的.它们只能在iPhone OS 3.2上编译和运行(iPhone OS 3.2只能在iPad上运行).因此,如果您可以使用UI_USER_INTERFACE_IDIOM(),结果将始终是指示iPad.
如果您包含此代码和目标OS 3.1.3(最新的iPhone/iPod Touch OS)以测试您的iPhone绑定的通用应用程序代码,您将收到编译器错误,因为符号未在3.1.3或更早版本中定义,为iPhone模拟器3.1.3编译时.
如果这是Apple推荐的运行时设备检测方法,那么我做错了什么?有没有人成功使用这种方法进行设备检测?
所以我有一个通用的应用程序,我正在设置一个内容大小UIScrollView.显然,iPhone和iPad上的内容大小会有所不同.如何为iPad设置一定的尺寸,为iPhone和iPod touch设置另一种尺寸?
如何判断应用程序是在iPhone 4,iPhone 3GS还是iPad上运行?
我想确定我使用的是哪种硬件,然后如果它是iPhone 4(例如使用视频灯或陀螺仪传感器)则提供其他功能.
任何帮助将不胜感激.
谢谢
PS:我希望以编程方式确定这一点,而不是根据物理外观确定.
ios ×2
ipad ×2
iphone ×2
objective-c ×2
cocoa-touch ×1
device ×1
ios4 ×1
iphone-4 ×1
swift ×1
uiscrollview ×1
xcode ×1