Warum befindet sich mein UIViewController nicht in der Antwortkette für seine Ansicht?

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

Es hat eine einfacheloadView Methode:

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

... dann mache ich den größten Teil meiner Initialisierung inviewDidLoad, wie dokumentiert. Es funktioniert alles und ich kann die Bildlaufansicht mit meinen benutzerdefinierten Ansichten darin sehen.

Ich benötige einen UIViewController, um die Ansicht zu besitzen, da sie Teil eines UINavigationBar-Workflows ist. Da ich ein Controller-Objekt habe, mache ich lieber das Controller-Zeug.

Das Problem ist also, dass mein View Controller nicht in der Responderkette zu sein scheint.touchesBegan:withEvent: wird aufgerufen, wenn ich es in der Stammansicht oder in einer Unteransicht definiere, aber nicht, wenn es im Ansichtscontroller selbst ist.

Die Dokumentation zur Ereignisbehandlung von Apple erwähnt dieview controller sollte sich in der Responderkette befinden. Die Dokumentation zu UIViewController enthält keine Informationen zu zusätzlichen Schritten, die über die Zuweisung der Stammansicht zu dem hinausgehenself.view Eigentum, wie ich oben getan habe. Die UIResponder-Dokumentation behauptet, ein UIView sollte herausfinden, ob es einen Controller hat, und das Ereignis an ihn weitergeben. Die UIScrollView-Dokumentation sagt überhaupt nichts aus.

Ich habe auch mit verschiedenen Einstellungen von experimentiertuserInteractionEnabled: für alle ansichten und subviews, ohne glück.

Was vermisse ich?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage