• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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.