Я делаю приложение, использующее HealthKit. Приложение не должно работать на iPad, поэтому мой метод viewDidLoad
содержит оператор if / then / else для отображения предупреждения пользователям iPad. Это мой код:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0") && [HKHealthStore isHealthDataAvailable] == 1) {
...
}
else {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Whoops!" message:@"Looks like your device doesn't support HealthKit :(" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alertController animated:1 completion:^(){
NSLog(@"Showed error alert because of unsupported device.");
}];
}
Бит SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")
взят из этой сути.
UIAlertController должен показывать, когда устройство является iPad, не работает под управлением iOS 8.0+ или просто (по какой-то другой причине) не может использовать HealthKit. На бумаге все это хорошо, но когда я запускаю приложение на симуляторе iPad 2 под управлением iOS 8, приложение запускается в обычном режиме и не отображает предупреждение. Для записи, я знаю, что у предупреждения нет кнопок, но я не хочу, чтобы оно исчезало. Он должен отображаться только на iPad или устройстве с iOS 8 ниже, и поэтому не должен исчезать, когда он отображается.
Так почему же мое приложение не отображает окно предупреждений на iPad? Консоль не показывает ошибок.
РЕДАКТИРОВАТЬ: Уведомление без кнопок не будет в конечном продукте, только в тестировании. Однако суть остается прежней, так как предупреждение все еще должно отображаться.
userIntefaceIdiom
вернет iPhone даже на iPad для приложения только для iPhone. - person rmaddy   schedule 17.10.2014