0

我有一个应用程序,当用户更改设备的位置时,我正在让我的 iOS 设备发出声音。我让用户将设备置于平面位置、横向位置,然后是纵向位置,当用户在适当的时间将设备置于这些位置时,应用程序会发出声音以确认位置。

然而,我的问题是,如果设备最初处于平放位置(例如平放在桌子上),设备不会发出声音。换句话说,只有当用户将设备放在那个位置时才会发出声音,并且不会立即感觉到它已经在的位置。有没有办法让我纠正这个问题,以便应用程序在最初处于该位置或置于正确位置时发出声音?这是我的相关代码:

- (void) orientationCheck {

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(orientationChanged:)
                                                 name:UIDeviceOrientationDidChangeNotification
                                               object:[UIDevice currentDevice]];

    timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(showTextOnly) userInfo:nil repeats:NO];
}


- (void) orientationChanged:(NSNotification *)note
{
    UIDevice *device = note.object;

    if(currentTest == flatTest) {

        testLabel.frame = CGRectMake(50, 30, 200, 150);
        [testLabel setText:@"Hold device on its side."];
        testImage.frame = CGRectMake(10, 150, 300, 200);
        testImage.image = [UIImage imageNamed:@"accelerometer test - side.png"];

        if (device.orientation == UIDeviceOrientationFaceUp || device.orientation == UIDeviceOrientationFaceDown) {

           ...

        }

    }

谁能看到我做错了什么,以及如何解决这个问题?

4

1 回答 1

0

为什么不在启动时检查设备的方向?换句话说,除了在设备方向改变时注册通知之外,还要查看设备方向什么。

于 2013-01-05T02:58:21.533 回答