1

iOS5.0を実行しているiPhone3GSのコードの一部で問題が発生しています

次のブロックは、iOS5.0を搭載したiPhone4で正常に呼び出されても、実行されることはありません。

ログステートメントが表示されることはなく、ブレークポイントがトリガーされることもありません。チェックしたところ、モーションマネージャーとキューの両方がnullではありません。

  [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {

            NSLog(@"motion event received");

//...
}];

何かが足りないのですか、それともブロックキューなしで機能するようにコードを書き直す必要がありますか?
ussueにご意見をお寄せいただきありがとうございます。

アップデート:

私はこの方法をチェックしました、そしてそれは働きます:

   [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        NSLog(@"accelerometerData event received");
    }];
4

1 に答える 1

3

これはブロックキューとは何の関係もありません。あなたの問題は、デバイスのモーションイベントに加速度計とジャイロスコープの両方が必要なことだと思います(そしてクエリを実行できます-deviceMotionAvailable)が、iPhone3GSにはジャイロスコープがありません。したがって、非ブロックベースのデバイスモーションメソッドでさえ、機能しません。加速度計だけでニーズに十分かどうかを確認する必要があります。それ以外の場合は、ジャイロスコープを必要とするようにアプリを制限する必要があります。

于 2012-02-17T04:06:43.703 に答える