2017-08-10 12 views
0

私はCoreMotionを初めて利用しています。それは、デバッグでは、私の方法でステートメントの次CoreMotion [ViewController updateReferenceAttitude:] - セレクタが認識されないのはなぜですか?

[myButton addTarget:self action:@selector(updateReferenceAttitude:) forControlEvents:UIControlEventTouchUpInside]; 

クラッシュをreferenceAttitude

- (void)updateReferenceAttitude 
    { 
     self.refAttitude = self.manager.deviceMotion.attitude; 
     NSLog(@"you clicked a button that took a 3D snapshot"); 
    } 

を設定しようとしたときに私の最初のプログラムはdeviceManager変更、ピッチ、ロールおよびヨーの値が、クラッシュを示しています

'NSInvalidArgumentException', reason: '-[ViewController updateReferenceAttitude:]: unrecognized selector sent to instance 0x14875a00' 

これをテストするために、iOS 10.3.3を実行しているiPhone 5 CでXcode 8.3.3を使用します。

これはなぜselectorが認識されないのですか?

答えて

0

問題は修正されており、CoreMotionとはほとんど関係がありませんでした。方法

- (void)updateReferenceAttitude 

は、私はアプリが実行されている間、基準姿勢をリセットするためにUIButtonを含めていたが、ViewDidLoad起動後に自動的に同じメソッドを呼び出した

- (void)updateReferenceAttitude:(UIButton *(sender 

でなければなりません。

この問題は、メソッドを呼び出す代わりに、初期参照用のステートメントを使用することで解決されました。

if (self.refAttitude == nil) 
    { 
     self.refAttitude = self.manager.deviceMotion.attitude; // initial run 
     //  [self updateReferenceAttitude]; 
    } 
関連する問題