Domanda

Io corro in un problema con un po 'del mio codice su iPhone3GS esecuzione iOS5.0

Il seguente blocco non viene mai eseguito , anche se viene chiamato bene su iPhone4 con iOS5.0.

La dichiarazione di registro non compare mai, e il punto di interruzione non viene mai attivato. Ho controllato, e sia il responsabile del movimento e la coda non sono nulli.

  [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {

            NSLog(@"motion event received");

//...
}];

Mi manca qualcosa o devo riscrivere il mio codice di lavoro senza le code di blocco?
Grazie per qualsiasi ingresso sul ussue!

Aggiornamento:

Ho controllato questo metodo, e funziona:

   [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        NSLog(@"accelerometerData event received");
    }];
È stato utile?

Soluzione

Questo non ha nulla a che fare con le code di blocco. Credo che il tuo problema è il dispositivo di eventi di movimento richiedono sia accelerometro e giroscopio (e possono essere interrogati con -deviceMotionAvailable), ma l'iPhone 3GS non ha un giroscopio. Quindi i metodi di movimento dispositivo, anche il non-block-based non funziona per voi. Si dovrebbe guardare anche vedere se l'accelerometro da solo è sufficiente per le vostre esigenze; altrimenti dovrete per restringere l'app per richiedere un giroscopio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top