Я отвечаю на это сейчас (и в более позднюю дату), потому что многие из существующих ответов довольно старые, и большинство проголосовавших «за» на самом деле, по-видимому, неверны в соответствии с текущей документацией Apple (iOS 8.1, 2015)!
Чтобы доказать мою точку зрения, это комментарий из заголовочного файла Apple (всегда смотрите на источник и заголовки Apple):
/*The UI_USER_INTERFACE_IDIOM() macro is provided for use when
deploying to a version of the iOS less than 3.2. If the earliest
version of iPhone/iOS that you will be deploying for is 3.2 or
greater, you may use -[UIDevice userInterfaceIdiom] directly.*/
Таким образом, рекомендуемый в настоящее время APPLE способ обнаружения iPhone и iPad выглядит следующим образом:
1) В версиях iOS PRIOR до 3.2 используйте предоставленный Apple макрос:
// for iPhone use UIUserInterfaceIdiomPhone
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
2) В версиях iOS 3.2 или новее используйте свойство [UIDevice currentDevice]:
// for iPhone use UIUserInterfaceIdiomPhone
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)