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 に答える