• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Auf 90° Drehung des iPhones reagieren. Welche Methode kann das?

Piro299

Tokyo Rose
Registriert
03.02.10
Beiträge
70
Moin zusammen,

ich habe eine Anwendung, die ausschließlich im Portrait Mode läuft.

Nun möchte ich gerne, wenn ich das iPhone ins Querformat drehe, darauf reagieren also eine Funktion ausführen oder in einen anderen ViewController wechseln.

Gibt es eine Methode, die geworfen wird, wenn das iPhone in das Querformat geht? Oder wie kann man es abfragen?

Habe leider nicht viel dazu gefunden bzw. fast gar nichts.

Vielen Dank im Voraus.

Sven
 
Wenn das von der Anwendung so vorgesehen und gewollt ist kannst du da gar nichts dran ändern.
 
Gibt es eine Methode, die geworfen wird, wenn das iPhone in das Querformat geht?
Im AppDelegate wird die Methode application:willChangeStatusBarOrientation:duration: aufgerufen und danach wird noch eine UIApplicationWillChangeStatusBarOrientationNotification versendet. Das wären zwei Möglichkeiten, wo du dich einklinken kannst.
 
Piro möchte (so wie ich es verstanden habe) die Orientation nicht ändern, sondern einen anderen ViewController oder sonstiges aufrufen. Die Methode wird also (denke ich) nicht aufgerufen.
 
Danke schon mal an alle für die ganzen Tipps.

Auf das Drehen des iPhones möchte ich gerne wie bei einem Button, den man drückt einen neuen ViewController aufrufen.

Anderer Ansatz: Kann man einen internen Sensor verwenden?
 
Ja, die eigene Abfrage des Sensors scheint mir die einzige Möglichkeit (siehe auch meinen vorherigen Link).

Hier ein Ausschnitt aus meiner App (die beiden Landscape Richtungen sind abgefragt)

Code:
self.manager=[[CMMotionManager alloc] init];
    if (self.manager.accelerometerAvailable) {
   
    self.manager.accelerometerUpdateInterval = 0.1;
    __weak __typeof(self) weakSelf = self;

    [self.manager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        CGFloat x=accelerometerData.acceleration.x;
        CGFloat y=accelerometerData.acceleration.y;
        float angle = atan2(y,-x);
       
        CGFloat tempOrientation = 0.0;
        if(angle >= -0.75 && angle <= 0.75) {
            tempOrientation=1;
        }
        if(angle <= -2.25 || angle >= 2.25) {
            tempOrientation=-1;
        }
...