0

HealthKitを使ったアプリを作っています。このアプリは iPad で動作してはならないため、私のviewDidLoadメソッドには、iPad ユーザーにアラートを表示する if/then/else ステートメントが含まれています。これは私のコードです:

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")ビットはthis gistからのものです。

UIAlertController は、デバイスが iPad である場合、iOS 8.0 以降を実行していない場合、または (何らかの理由で) HealthKit を使用できない場合に表示されます。これは紙の上では問題ありませんが、iOS 8 を実行している iPad 2 シミュレーターでアプリを実行すると、アプリは通常どおり起動し、アラートは表示されません。記録として、アラートにボタンがないことは知っていますが、消えたくありません。iPad または iOS 8 未満のデバイスでのみ表示する必要があるため、表示されたときに消える必要はありません。

では、私のアプリが iPad でアラート ビューを表示しないのはなぜですか? コンソールにエラーは表示されません。

編集: ボタンのない通知は最終製品ではなく、テスト中です。ただし、アラートは引き続き表示されるはずなので、ポイントは残ります。

4

3 に答える 3

1

デバイスファミリがユニバーサルに設定されていることを確認しましたか? iPhone のみに設定すると、ユーザーのイディオムが iPad になることはありません。アプリをユニバーサルにすることで、この質問で尋ねられた同様の問題が解決されたようです

PS、最初の回答が質問を正しく読んでいないことをお詫びします。

于 2014-10-17T07:02:14.907 に答える