iOS detecta si el usuario está en un iPad



Answers

En Swift puedes usar las siguientes ecualidades para determinar el tipo de dispositivo en las aplicaciones universales:

UIDevice.current.userInterfaceIdiom == .phone
// or
UIDevice.current.userInterfaceIdiom == .pad

El uso sería algo así como:

if UIDevice.current.userInterfaceIdiom == .pad {
    // Available Idioms - .pad, .phone, .tv, .carPlay, .unspecified
    // Implement your logic here
}
Question

Tengo una aplicación que se ejecuta en el iPhone y iPod Touch, puede ejecutarse en el iPad Retina y todo, pero debe haber un ajuste. Necesito detectar si el dispositivo actual es un iPad. ¿Qué código puedo usar para detectar si el usuario está usando un iPad en mi UIViewController y luego cambiar algo en consecuencia?




Puede verificar rangeOfString para ver si la palabra iPad existe así.

NSString *deviceModel = (NSString*)[UIDevice currentDevice].model;

if ([deviceModel rangeOfString:@"iPad"].location != NSNotFound)  {
NSLog(@"I am an iPad");
} else {
NSLog(@"I am not an iPad");
}



Muchas formas de hacerlo en Swift :

Verificamos el modelo a continuación (solo podemos hacer una búsqueda sensible a mayúsculas aquí):

class func isUserUsingAnIpad() -> Bool {
    let deviceModel = UIDevice.currentDevice().model
    let result: Bool = NSString(string: deviceModel).containsString("iPad")
    return result
}

Verificamos el modelo a continuación (podemos hacer una búsqueda sensible a mayúsculas / minúsculas aquí):

    class func isUserUsingAnIpad() -> Bool {
        let deviceModel = UIDevice.currentDevice().model
        let deviceModelNumberOfCharacters: Int = count(deviceModel)
        if deviceModel.rangeOfString("iPad",
                                     options: NSStringCompareOptions.LiteralSearch,
                                     range: Range<String.Index>(start: deviceModel.startIndex,
                                                                end: advance(deviceModel.startIndex, deviceModelNumberOfCharacters)),
                                     locale: nil) != nil {
            return true
        } else {
            return false
        }
   }

UIDevice.currentDevice().userInterfaceIdiom continuación solo devuelve el iPad si la aplicación es para iPad o Universal. Si se trata de una aplicación de iPhone que se ejecuta en un iPad, entonces no lo hará. Por lo tanto, debería verificar el modelo en su lugar. :

    class func isUserUsingAnIpad() -> Bool {
        if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
            return true
        } else {
            return false
        }
   }

Este fragmento a continuación no se compila si la clase no hereda de un UIViewController , de lo contrario funciona bien. Independientemente de UI_USER_INTERFACE_IDIOM() solo devuelve iPad si la aplicación es para iPad o Universal. Si se trata de una aplicación de iPhone que se ejecuta en un iPad, entonces no lo hará. Por lo tanto, debería verificar el modelo en su lugar. :

class func isUserUsingAnIpad() -> Bool {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad) {
        return true
    } else {
        return false
    }
}



if(UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.pad)
 {
            print("This is iPad")
 }else if (UI_USER_INTERFACE_IDIOM () == UIUserInterfaceIdiom.phone)
 {
            print("This is iPhone");
  }



También puedes usar esto

#define IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
...
if (IPAD) {
   // iPad
} else {
   // iPhone / iPod Touch
}



Tenga cuidado: si su aplicación apunta solo a dispositivos iPhone, el iPad que se ejecuta con el modo compatible con iphone devolverá falso para la declaración siguiente:

#define IPAD     UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad

La forma correcta de detectar dispositivos físicos iPad es:

#define IS_IPAD_DEVICE      ([(NSString *)[UIDevice currentDevice].model hasPrefix:@"iPad"])



Muchas respuestas son buenas pero uso así en rápida 4

  1. Crea constante

    struct App {
        static let isRunningOnIpad = UIDevice.current.userInterfaceIdiom == .pad ? true : false
    }
    
  2. Use así

    if App.isRunningOnIpad {
        return load(from: .main, identifier: identifier)
    } else {
        return load(from: .ipad, identifier: identifier)
    }
    

Editar: Como Sugerencia Cœur simplemente crea una extensión en UIDevice

extension UIDevice {
static let isRunningOnIpad = UIDevice.current.userInterfaceIdiom == .pad ? true : false

}




Related