2016-01-28 5 views
0

Мое приложение было отклонено, так как проблема связана с iPad-интерфейсом моего приложения. Я исправил это до того, как это отклонилось, проверяя, было ли устройство iPad, чтобы внести некоторые незначительные корректировки в параметры пользовательского интерфейса. Проблема в том, что когда я звоню:userInterfaceIdiom возвращает неправильные значения на реальных устройствах

UIDevice.currentDevice().userInterfaceIdiom //returns .Unspecified 
traitCollection.userInterfaceIdiom //returns -1 

На настоящем iPad я получаю. Не указано. Почему это?

ответ

0

Для того, чтобы исправить это, я создал специальный метод, который на самом деле работает на реальном IPad

public extension UIDevice { 

func isIpadDevice() -> Bool { 
    let identifier = deviceIdentifier() 

    return identifier.lowercaseString.containsString("ipad") 
} 

private func deviceIdentifier() -> String { 
    var systemInfo = utsname() 
    uname(&systemInfo) 
    let machineMirror = Mirror(reflecting: systemInfo.machine) 
    let identifier = machineMirror.children.reduce("") { identifier, element in 
     guard let value = element.value as? Int8 where value != 0 else { return identifier } 
     return identifier + String(UnicodeScalar(UInt8(value))) 
    } 

    return identifier 
} 

}

Для того, чтобы использовать его называют

UIDevice.currentDevice().isIpadDevice() //wohoo 
Смежные вопросы