Existem várias maneiras de verificar se um dispositivo é um iPad. Esta é a minha maneira favorita de verificar se o dispositivo é de fato um iPad:
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
return YES; /* Device is iPad */
}
Do jeito que eu uso
#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad
if ( IDIOM == IPAD ) {
/* do something specifically for iPad. */
} else {
/* do something specifically for iPhone or iPod touch. */
}
Outros exemplos
if ( [(NSString*)[UIDevice currentDevice].model hasPrefix:@"iPad"] ) {
return YES; /* Device is iPad */
}
#define IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if ( IPAD )
return YES;
Para uma solução Swift, consulte esta resposta: https://stackoverflow.com/a/27517536/2057171
UI_USER_INTERFACE_IDIOM()
é equivalente a([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
. Você pode ser melhor fora de cache a algum lugar resultado:BOOL iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; … if (iPad) …
.if UIDevice.currentDevice().userInterfaceIdiom == .Pad
No Swift, você pode usar as seguintes igualdades para determinar o tipo de dispositivo nos aplicativos universais:
O uso seria então algo como:
fonte
userInterfaceIdiom
'está disponível no iOS 3.2 e posterior'. então esse não deveria ser o problema..Phone
vez de.Pad
.Isso faz parte do UIDevice a partir do iOS 3.2, por exemplo:
fonte
Você também pode usar isso
fonte
UI_USER_INTERFACE_IDIOM()
retorna o iPad apenas se o aplicativo for para iPad ou Universal. Se for um aplicativo para iPhone rodando em um iPad, não será. Então, você deve verificar o modelo.fonte
Cuidado: se o seu aplicativo estiver direcionado apenas para o dispositivo iPhone, o iPad em execução no modo compatível com o iphone retornará falso para a declaração abaixo:
A maneira correta de detectar um dispositivo físico para iPad é:
fonte
Descobri que alguma solução não funcionava para mim no Simulador no Xcode. Em vez disso, isso funciona:
ObjC
Rápido
Também em 'Outros exemplos' no Xcode, o modelo do dispositivo volta como 'iPad Simulator', de modo que o ajuste acima deve resolver isso.
fonte
hasSuffix:@"iPad"
vez deisEqualToString@"iPad"
... sua melhor aposta é registrar o modelo do dispositivo que o simulador retorna e continua de lá ...Muitas maneiras de fazer isso no Swift :
Verificamos o modelo abaixo (só podemos fazer uma pesquisa que diferencia maiúsculas de minúsculas aqui):
Verificamos o modelo abaixo (podemos fazer uma pesquisa sensível a maiúsculas / minúsculas aqui):
UIDevice.currentDevice().userInterfaceIdiom
abaixo retorna o iPad apenas se o aplicativo for para iPad ou Universal. Se for um aplicativo para iPhone rodando em um iPad, não será. Então, você deve verificar o modelo. :Este trecho abaixo não compila se a classe não herda de um
UIViewController
, caso contrário, ele funciona muito bem. Independentemente, eleUI_USER_INTERFACE_IDIOM()
retorna o iPad apenas se o aplicativo for para iPad ou Universal. Se for um aplicativo para iPhone sendo executado em um iPad, não será. Então, você deve verificar o modelo. :fonte
*
*
fonte
Muitas respostas são boas, mas eu uso assim no Swift 4
Criar constante
Use assim
Editar: Como sugerido, basta criar uma extensão no UIDevice
fonte
App
estrutura quando você pode fazer o mesmo com umaUIDevice
extensão?Você pode verificar o rangeOfString para ver se a palavra iPad existe assim.
fonte
["I am not an iPad" rangeOfString:@"iPad"].location != NSNotFound
retorna verdadeiro.Mais uma maneira rápida:
Uso:
fonte
No Swift 4.2 e no Xcode 10
Se você deseja detectar dispositivos específicos
fonte
Por que tão complicado? É assim que eu faço ...
Swift 4:
Desta forma, você pode apenas dizer
if iPad {}
fonte
Para as versões mais recentes do iOS, basta adicionar
UITraitCollection
:e depois
UIViewController
basta verificar:fonte
fonte