2010-11-10 8 views
6

Ich benutze diesen Code:iPad Orientierung gibt unbekannte Werte

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

iPad Orientierung zu bekommen, aber es gibt UIDeviceOrientationUnknown wenn ich OpenGL-Rendering verwenden. Wenn ich Filme abspiele oder UIViews zeige, wird der korrekte Wert zurückgegeben. Weißt du, wie ich richtig orientieren kann? Ich möchte den Beschleunigungssensor nicht verwenden, weil ich wissen möchte, wann das Gerät die Ausrichtung gesperrt hat.

Vielen Dank!

+0

Wissen Sie, wie bekomme ich den Zustand der Tastensperre? – Felics

+0

Stören Sie nicht die Schaltfläche zur Ausrichtung der Sperre. Das ist kein Feature mehr in iOS 4.2. –

+0

@Evan: Ja es ist, es ist gerade vom Hardware-Schalter zur Software bewegt worden. Lesen Sie buchstäblich jede Rezension von iOS 4.2. –

Antwort

0

Wenn ich hinzufügen [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; Die Ausrichtung wird auch im OpenGL-Rendering-Modus korrekt sein. UIDeviceOrientationUnknown orientation wird manchmal zurückgegeben, aber nur für kurze Zeit.

16

Es gibt Situationen, in denen der Beschleunigungssensor die Ausrichtung nicht genau ablesen kann, z. B. wenn das Gerät flach gehalten wird. Sie sollten noch in der Lage sein, die aktuelle Ausrichtung erhalten mit:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
+0

Event, wenn ich das Gerät in einer normalen Position halte, ist die Ausrichtung UIDeviceOrientationUnknown, aber nur, wenn ich OpenGL Rendering verwende. Ich verstecke die Statusleiste und ihre Ausrichtung ist immer Porträt. – Felics

+0

Die statusBar-Ausrichtung ist unbezahlbar. Vielen Dank! – Eugene

+0

Dieser Ansatz löste meine Probleme mit dem "unbekannten –