2010-11-25 5 views
0

Ich arbeite an einer Landschaft iPhone App. Es läuft gut auf dem iPhone, aber wenn ich es auf einem iPad oder dem iPad Simulator laufen lassen, hat es Probleme mit Berührungen, die 320 in der x-Richtung überschreiten.iPad Landschaft Probleme erkennen berührt auf der linken Seite des Bildschirms

Viele der UIB-Tasten über 320 hinaus werden hervorgehoben, wenn sie gedrückt werden, führen jedoch ihre Aktion nicht durch.

Als ich hinzufügen, das meinen superviews:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
UITouch *touch = [touches anyObject]; 

CGPoint touchLocation = [touch locationInView:self]; 
NSLog(@"bounds: %1.2f %1.2f touch: %1.2f %1.2f",self.bounds.size.width,self.bounds.size.height,touchLocation.x,touchLocation.y);  
} 

wird es nie Ausgang Jeden Teil des Bildschirms gedrückt ein x-Wert von mehr als 320, die größer als 320 für x eine Leistung von 320 ergibt.

Die UIViews werden alle programmatisch und ohne UIViewControllers ausgeführt. Ich habe den plist legen Sie es in der Landschaft zu starten und in der applicationDidFinishLaunching drehe ich die Ansichten mit diesem:

window.transform = CGAffineTransformMakeRotation((M_PI/2.0)); 
window.bounds = CGRectMake(0, 0, 480, 320); 
window.center = CGPointMake(160.0f, 240.0f); 
[window makeKeyAndVisible]; 

Jede Hilfe sehr geschätzt wird.

+0

Sie dies als ein Gebäude " Universal-App? " Wenn Sie es für iPad erstellt haben, haben Sie zuerst die Schritte zum Erstellen einer iPad-Version Ihrer .nib-Dateien ausgeführt? –

+0

Nein, ich baue es als reine iPhone App. – Jamvert

+0

'window.bounds = CGRectMake (0, 0, 480, 320);' setzt die Grenzen für die App auf 480 und 320. Ich denke also, dass Sie darüber hinaus keine Berührungen erhalten. – visakh7

Antwort

1

Ich hatte ein ähnliches Problem, aber ich programmiere alle Fenster, View und ViewController (weil es ein Spiel mit OpenGL ES war).

Das Problem war, dass ich ursprünglich das Fenster mit der gleichen Rect als die Ansicht erstellt. Um es zu lösen nur das Fenster auf diese Weise machen:

// Always create the window in Portrait mode 
mpWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

und die Viewcontroller (der die Ansicht erstellt):

mpController = [[OViewController alloc] initWithFrame: CGRectMake(mPosX, mPosY, mWidth, mHeight)]; 
// After this line the view will rotate to landscape 
[mpWindow addSubview:mpController.view]; 

hoffe, das hilft!

0

Eine Ihrer Elternansichten oder das Fenster hat nicht den richtigen Rahmen.

Da Berührungen von Fenster aufwärts zu Ihrer Ansicht ausgewertet werden, wird es aufhören, wenn die Berührung außerhalb Ihrer Ansichten Eltern ist.

könnten Sie sie debuggen mit Code wie:

UIView *parent = self ; 
while (parent = [parent superview]) NSLog("parent: %@",NSStringFromCGRect(parent.frame)); 

dies die Frames in Ihrem Rahmen Hierachie drucken ... prüfen, ob man eine Breite von 320 Pixel hat

Verwandte Themen