2010-07-02 3 views
2

그래서 현재 [[UIDevice currentDevice] 모델]과 함께 UI_USER_INTERFACE_IDIOM을 사용하여 iPhone, iPod 또는 iPad에 있는지 확인합니다. 내가 찾은 것은 iPad 시뮬레이터 3.2에서 UI_USER_INTERFACE_IDIOM이 여전히 UIUserInterfaceIdiomPhone (iPhone)으로 평가된다는 것입니다.UI_USER_INTERFACE_IDIOM이 (가) 대상 장치 제품군에서 작동합니까?

이것이 내 Targeted Device Family 설정과 관련이 있는지 궁금합니다. 나는 애플 리케이션을 위해서만 아이폰을 목표로 삼고있다. 뷰를 확장하는 범용 앱을 만들고 싶지는 않다. 그러나 3.2 SDK를 지원하므로 iPad가있는 사용자가 내 iPhone 앱을 실행할 수 있기를 바랍니다. iPhone을 타겟팅하는 경우에도 UI_USER_INTERFACE_IDIOM이 iPad에서 올바르게 평가됩니까?

답변

2

UI_USER_INTERFACE_IDIOM 기기가 iPhone 또는 iPad인지 확인하십시오. 그것이 확인하는 것은 사용자 인터페이스이 iPhone 모드 (1x/2x 것) 또는 iPad 모드에 있는지 여부입니다.

iPad를 타겟팅하도록 앱을 구성하지 않은 경우 UI 은 iPhone 앱인이므로 UIUserInterfaceIdiomPhone을 항상 반환합니다. 그것은 디자인에 의한 기능입니다.

앱이 iPhone 만 타겟팅하도록 구성되어 있어도 iPad는 문서화 된 방법을 사용하는 한 아무런 문제없이 iPad를 실행할 수 있어야합니다.

(당신이 아이 패드 고유의 기능이 필요한 경우 이 할 검사 장치가 정말 아이 패드인지. 대신, 각각의 기능을 확인합니다.)

+0

. 이것을 결정하는 데 사용할 수있는 메서드 또는 매크로가 있습니까? – unjust

+0

@unjust : CoreTelephony에 약하게 링크 할 수 있습니다 (CT를 사용한다고 가정합니다). 그런 다음 몇 가지 클래스가 있는지 확인하십시오. 'CTCall'은 NSClassFromString을 사용하여 존재합니다. – kennytm

+0

[[UIDevice currentDevice] 모델]이 iPad로 출시 될 예정입니까? 나는 iPad 만 자동 회전 할 수 있도록 노력하고 있습니다. – Felixs

0

내가 제공 할 수있는 베스트 아이 패드 시뮬레이터에 있다는 점이다 (3.2)이

NSLog(@"model : %@", [UIDevice currentDevice].model); 

반환

model : iPhone Simulator 
"아이폰"모드에서 실행하는 동안

(메모로 : "iPhone"전용이므로 iPad에서 iPhone 환경에서 실행 중입니다. 반환 된 "모델"이름이 그 영향을 받았다고 가정해야합니다.

0

사람들이 말한대로 개별 기능을 확인하십시오.

전화를 만들기위한합니까 장치의 전화 기능에 따라 전화 통화 작업에 전화 번호를 연결 여부를 결정하기 위해 노력하고있어이

// Only show the button if its is a device capable of making calls 
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:"]]) { 
    self.Button.hidden = NO; 
} else { 
    self.Button.hidden = YES; 
} 
관련 문제