2014-04-24 2 views
0

내 앱을 실행하는 기기가 iPad 인 경우 다른 viewcontroller를로드하고 싶습니다. 시뮬레이터에서 테스트하고 싶습니다 (분명히). 나는 앱을 실행하는 장치가 iPad인지 여부를 가정으로 결정하는 방법을 온라인에서 찾았지만 제대로 작동하지 않는 것 같습니다. 아래의 예.시뮬레이터를 실행할 때 프로그램이 iPad로 인식하지 못합니다.

Xcode에서 장치를 iPad로 설정하고 실행하면 다음 코드 (appdelegate.m 파일에서)가 "ipad로 인식되었습니다!"가 인쇄됩니다. 로그에,하지만하지 않습니다

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 
    NSLog(@"recongnized as ipad!"); 
} 

을 두 번째로, 내가

CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size; 
NSLog(@"device height is %f", iOSDeviceScreenSize.height); 

그러나 (다시는 내 appdelegate.m 파일에) 사용되는 장치의 높이를 출력 코드의 비트, 이 장치를 iPad로 설정하면 높이가 480이라고 표시됩니다.이 높이는 iPad가 아니라 iPhone 4의 높이입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? appdelegate.m 파일에 if 문을 써서 장치가 iPad라면 다른 viewcontroller를 시작하고 싶습니다. 감사!

+5

앱이 iPhone 전용 앱, iPad 전용 앱 또는 범용 앱으로 설정되어 있습니까? – rmaddy

+0

iPhone 대신 iPad 에뮬레이터를 실행해야한다고 생각합니다. –

+1

@rmaddy 젠체하는 사람, 그게 다야! 빌드 대상 설정의 대상 장치가 iPhone에만 설정되었으므로 iPhone/iPad로 전환했습니다. 고맙습니다! 스택 오버플로가 지구상에서 가장 좋은 것입니다. – mattman88

답변

0

UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad iPad에서 iPhone 전용 앱을 실행하는 경우 YES을 반환하지 않으므로 범용 앱이어야합니다. 그러나 iPad와 나머지를 구별하는 것이 좋습니다. 앱이 iPhone 전용 인 경우 iPad를 확인해야하는 이유가 없습니다.

NSString *device = [[UIDevice currentDevice] model]; 

이 방법을 깰 수 있음을 명심하십시오 : 당신이 정말이 테스트 목적으로 어쩌면, 앱이 보편적 않고 작업 할 경우는 "iPad"가 포함 된 경우

, 다음과 같은 문자열을 사용하여 볼 수 있었다 애플이 모델 문자열을 바꾸기로 결정했다면. 따라서 앱을 제출하기로 결정한 경우 사용하지 않는 것이 좋습니다.

관련 문제