0

我是新手CoreMotion。我的第一个程序显示deviceManager了俯仰、滚动和偏航的变化值,但在尝试设置时崩溃referenceAttitude

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

在调试中,我的方法中的语句

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

崩溃与以下

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

为了测试它,我使用 Xcode 8.3.3 和运行 iOS 10.3.3 的 iPhone 5 C。

谁能解释为什么这selector不被认可?

4

1 回答 1

0

问题已解决,与CoreMotion. 方法

- (void)updateReferenceAttitude

应该

- (void)updateReferenceAttitude:(UIButton *(sender

UIButton在应用程序运行时添加了一个重置​​参考姿态,但在ViewDidLoad启动后自动调用相同的方法。

通过使用语句作为初始引用而不是调用方法来解决该问题。

    if (self.refAttitude == nil)
    {
        self.refAttitude = self.manager.deviceMotion.attitude;  // initial run
        //        [self updateReferenceAttitude];
    }
于 2017-08-11T00:31:39.887 回答