質問

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");
    }];
役に立ちましたか?

解決

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top