Warum ist nicht mein UIViewController in der responder-Kette für seine Ansicht?

Ich geschrieben habe, eine Unterklasse von UIViewController erstellt eine Ansicht programmgesteuert ändern, anstatt es zu laden aus einer NIB-Datei.

Es hat eine einfache loadView Methode:

- (void)loadView
{
    UIScrollView *mainScrollView =
        [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.view = mainScrollView;
    [mainScrollView release];
}

...dann Mach ich den Großteil meiner Initialisierung in viewDidLoad, wie dokumentiert. Es funktioniert alles, und ich kann sehen, die scroll-view mit meiner benutzerdefinierten Ansichten in ihm.

Ich brauche einen UIViewController, um die eigene Ansicht, weil es Teil eines UINavigationBar workflow. Da habe ich ein controller-Objekt, eher möchte ich es tun, der controller-Zeug.

Das problem, dann ist meine Ansicht-controller nicht zu sein scheinen in der responder-Kette. touchesBegan:withEvent: der aufgerufen wird, wenn ich es definieren in der stammansicht oder einer Untersicht, auch wenn es nicht in der view-controller selbst.

Apple-event-handling-Dokumentation leichtfertig erwähnt die view-controller sollte in der responder-Kette. UIViewController Dokumentation sagt nichts über zusätzliche Schritte erforderlich, über die die Zuordnung der stammansicht zu der self.view Eigenschaft, wie ich es getan habe vor. UIResponder Dokumentation behauptet, eine UIView müssen herausfinden, ob es einen controller, und übergeben Sie das Ereignis, um es. UIScrollView Dokumentation sagt gar nichts.

Habe ich experimentierte auch mit verschiedenen Einstellungen der userInteractionEnabled: für alle sichten und Untersichten, ohne Glück.

Was bin ich?

  • Ich habe da gelernt, dass wenn der root-view ist nichts außer ein UIScrollView, der view-controller wird in der responder-Kette. Ist UIScrollView kaputt?
  • Diese Antwort ist hilfreich: stackoverflow.com/a/7808238/790198
InformationsquelleAutor EricB | 2009-09-07
Schreibe einen Kommentar