• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

iPhone Orientation wird nicht richtig ausgelesen

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
Hallo,

ich habe folgendes Problem in meiner App. Da wir keinen Interface Builder mehr nutzen müssen wir logischerweise alle Elemente im Code erstellen und platzieren. Da wir auch noch zwischen Landscape und Portrait Modus unterscheiden wollen, habe ich folgende Struktur entwickelt:

Code:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
		if( ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight) ){
			self.DetailButton.frame = CGRectMake(180,220,120,40);
			self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,55,480,216)];
			self.Label = [[UITextView alloc] initWithFrame:CGRectMake(40,0,400,40)];
			self.Label2 = [[UITextView alloc] initWithFrame:CGRectMake(0,20,480,40)];
		}
		else if( ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) || ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) ){
			self.DetailButton.frame = CGRectMake(100,360,120,40);
			self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,105,320,216)];
			self.Label = [[UITextView alloc] initWithFrame:CGRectMake(10,0,300,60)];
			self.Label2 = [[UITextView alloc] initWithFrame:CGRectMake(10,50,300,60)];
		}
           [...]
	}
    return self;
}

Wenn das im Simulator teste funktioniert es einwandfrei, jedoch auf dem iPhone wird keine der beinen Orientations festgestellt, also wird nichts angezeigt.

Hab ich irgendwas falsch gemacht? Wie überprüft ihr wie das iPhone gehalten wird?

Edit: Jetzt auch mit Code-Blöcken, tut mir Leid.
 
Zuletzt bearbeitet:

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Packe deinen Code bitte erst in CODE-Blöcke, dann helfen wir dir weiter...

Gruss ppocket
 

ifthenelse

Fießers Erstling
Registriert
07.12.06
Beiträge
129
1. Probier' es mal mit interfaceOrientation (Property des View-Controllers, also z.B. per self.interfaceOrientation darauf zugreifen), statt [UIDevice currentDevice].
2. Wie sehen Deine Accessor-Methoden für die Views (genauer: der Properties) aus? Du musst deine Views jeweils als Subview dem vom View-Controller verwalteten View hinzufügen! (und zum richtigen Zeitpunkt auch wieder entfernen.)
3. Kannst Du Dir die Abfrage auf eine Portrait-Orientierung sparen. Es wird immer eine der vier Orientierungen geliefert.

Btw. "DetailButton", "Label" und "Label2" sind falsch geschrieben :oops: – und Memory-Leaks fängst Du Dir hier...
Code:
self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,55,480,216)]
(und ähnlichen Konstrukten) wohl auch noch ein, da Du (hoffentlich) pickerView retainst. Da gehört als Quick-Fix ein autorelease angehängt.


Gruss, Jörg
 
  • Like
Reaktionen: TheNman

TheNman

Grahams Jubiläumsapfel
Registriert
28.06.08
Beiträge
104
Hallo,

vielen dank für deine Hilfe. Die self.interfaceOrientation macht genau das was ich wollte. Der Rest passt soweit, ich bekommen beim Testen keine Warnungen oder Fehler.