2016-10-11 1 views
1

CMDeviceMotionデータへのアクセスに問題があります。私は必要なものがすべて含まれているが、私のstartDeviceMotionUpdates関数は渡されているようだ(私は何かがハンドラに間違っていると思う)。私のコードは次のとおりです。CMDeviceMotionデータアクセス

let manager = CMMotionManager() 
     if manager.isDeviceMotionAvailable { 
      manager.startDeviceMotionUpdates() 
      manager.deviceMotionUpdateInterval = 0.1 
      manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: { 
        (data, error) -> Void in 
        self.digit.text = String (describing: data!.gravity.z) 
        self.digit2.text = String (describing: data!.gravity.y) 
        self.digit3.text = String (describing: data!.gravity.z) 
        }) 

数字、数字2および数字3は、私の重力データを書きたい編集用のテキストフィールドです。すべてがiPhone 6でテストされています - deviceMotionは有効でアクティブです。私はstartMotionUpdates関数なしでデータにアクセスすることができましたが、私はNIL値しか得ていません。どんな考えが間違っていますか?ありがとう!

答えて

1

わかりました。 アクセスのコアモーションに(私の場合はCMDeviceMotionクラスを使用するだけでなく、CMGyroDataまたはCMAccelerometerDataすることができます) 3.0スウィフト:

let manager = CMMotionManager() 
if manager.isDeviceMotionAvailable { 
     manager.deviceMotionUpdateInterval = 0.05 //The lower the interval is, the faster motion data is read 
     manager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: { 
      (motion: CMDeviceMotion?, Error) -> Void in 

      //Do whatever U want with data provided by CMDeviceMotion 

      } 
     }) 
    } 
    else{ 
     print("Core Motion access denied") 
    } 

とデータの取得を停止することを忘れないでくださいコアモーションからもっと多くのものを必要としない場合は、

ovveride func viewWillDisappear(_ animated: Bool) { 
manager.stopDeviceMotionUpdates() 
} 

基本的に私の主な問題はハンドラの実装それが役に立てば幸い!

+0

エレガントなソリューション! – RediOne1

+0

ハンドラの実装とは関係ありません。 – matt

0

問題は、この行です:

manager.startDeviceMotionUpdates() 

はそれをカットします。あなたが言うときには、後からアップデートを開始します:あなたをめちゃくちゃに何

manager.startDeviceMotionUpdates(to: //... 

両方を言っています。

+0

さて、私はそれを認識しています - Uが見るように、私はそれを私の解決策で切りました。 –

+0

正直言って、私は前にこの行を削除しようとしました(manager.startDeviceMotionUpdatesだけを残していました)。そして、それがうまくいかなかったとしても... –

+0

私はあなたの元のコードを見ています。余分な 'manager.startDeviceMotionUpdates()'行以外の違いはありません。 – matt

関連する問題