touchesBegan und andere touch-events nicht immer erkannt im UINavigationController

Kurz: ich möchte, zu erkennen, dass eine Berührung des navigation-Controllers Titelleiste, aber Schwierigkeiten haben, eigentlich fangen alle berührt!

Alles erfolgt, ohne IB, ob das einen Unterschied macht.

Meine app delegieren .m-Datei enthält:

MyViewController *viewController = [[MyViewController alloc] init];
navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:navigationController.view];

Gibt es ein paar andere subviews Hinzugefügt, um das Fenster in einer Weise, die overlays navigationController, wobei nur die Navigationsleiste angezeigt sind, sichtbar.

MyViewController ist eine Unterklasse von UIViewController und seine .m-Datei enthält:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
 for (UITouch *touch in touches) {
  NSLog(@"ended\n");
 } 

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 for (UITouch *touch in touches) {
  NSLog(@"began\n");
 } 
}

Ich auch versucht, indem Sie diese Funktionen direkt in die app zu delegieren .m-Datei, aber die Konsole bleibt leer.

Was mache ich falsch?

Die gesamte Einrichtung meiner app ist ein UINavigationController, UIScrollView und UIPageControl Hinzugefügt, um das Fenster mit [window addSubview:...] in der app delegieren, in dieser Reihenfolge. Die ScrollView enthält dann weitere Ansichten, die mit dem eigentlichen Inhalt der app. Die Tasten des UINavigationController funktionieren, aber berührt auf den Titel nicht erkannt.
touchesEnded und begann, sind UIView Methoden nicht UIViewController
Daniel hat Recht... diese wird nie aufgerufen in einem UIViewController. Sie brauchen, um eine UIView-Unterklasse, mit diesen Methoden, und dann entweder zu weisen, dass sein viewController.anzeigen oder fügen Sie es zu der viewController die Ansicht als unteransicht (würden Sie wahrscheinlich tun, entweder von diesen wird in der loadView-Methode der viewController.
Ich habe versucht, die Zuordnung einer benutzerdefinierten viewController.anzeigen, aber das scheint nicht zu Holen, berührt auf der Navigationsleiste. Wenn ich loszuwerden, alle die andere Ansichten und lassen Sie einfach navigationController und den Blick von innen, es nur aufnimmt, berührt auf der Innenseite der Ansicht, aber nicht auf die Leiste.
touchesBegan/Endete nicht UIView Methoden sind, werden Sie UIResponder Methoden und ein UIViewController ist ein UIResponder.

InformationsquelleAutor SaltyNuts | 2010-06-14

Schreibe einen Kommentar