我正在制作一个使用 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 时显示。这在纸面上一切都很好,但是当我在运行 iOS 8 的 iPad 2 模拟器上运行该应用程序时,该应用程序正常启动并且不显示警报。作为记录,我知道警报没有按钮,但我不希望它消失。它应该只在 iPad 或低于 iOS 8 的设备上显示,因此在显示时不需要消失。
那么为什么我的应用程序没有在 iPad 上显示警报视图?控制台显示没有错误。
编辑:没有按钮的通知不会出现在最终产品中,只是在测试中。然而,这一点仍然存在,因为警报应该仍然出现。