Ich definiere diese Methode in meiner UITableViewController-Unterklasse:
%Vor%aber es wird nicht ausgelöst. UIViewController ist eine Unterklasse von UIResponder, also sollte es funktionieren, oder? Danke
Ja, das sollte definitiv funktionieren.
Stellen Sie sicher, dass Benutzerinteraktion aktiviert für die Ansicht aktiviert ist, der dieser Controller entspricht.
Wenn die Ansicht von einer nib / xib geladen wird, stellen Sie sicher, dass der Eigentümer der Datei auf den entsprechenden Klassennamen eingestellt ist und die view
-Ausgabe des Dateieigentümers mit der richtigen Ansicht verbunden ist.
Update: Ich sehe auch dieses Verhalten mit einer App, die mit der Nav-basierten App-Vorlage erstellt wurde, aber mit einer View-basierten App-Vorlage funktioniert es wie erwartet.
Ich denke, dass im Fall eines Navigations-Controllers die in den View-Controller eingebettete Tabellenansicht das Ereignis erhält, bevor der View-Controller dies tut. Siehe die UIView-Referenz (Hervorhebung von mir):
View-Controller sind sie selbst Nachkommen der UIResponder-Klasse und werden in den Responder eingefügt Kette zwischen der verwalteten Stammansicht und seine superview, die typischerweise gehört zu einer anderen Sichtweise Regler. Wenn die View-Controller-Ansicht kein Ereignis behandelt , View-Controller selbst hat die Option der Handhabung des Ereignisses vor dem Passieren das Ereignis entlang der Superview.
Dies bedeutet, dass die Ansicht die erste Chance hat, das Ereignis zu behandeln, und wenn dies der Fall ist, wird der View-Controller es nicht bekommen.
Ich weiß nicht genau, was Sie erreichen wollen, daher bin ich mir nicht sicher, welche Lösung ich anbieten soll.
Wenn Sie versuchen, eine Tastatur in einem UITableViewController zu verwerfen, besteht eine vernünftige Lösung darin, resitFirstResponder in der Methode didSelectRowAtIndexPath des TableView-Delegaten aufzurufen.
%Vor%Ich bin gerade auf das genaue Problem als Original-Posting gestoßen. Ich habe das Problem gelöst, indem ich eine Unterklasse von UITableView erstellt und die Methode "touchesBegan" überschrieben habe. Ich habe auch ein Protokoll erstellt, so dass das UITableView eine Methode auf dem UITableViewController aufrufen konnte, die letztlich das Ereignis "touchBegan" behandeln soll.
Hier ist die Kopfzeile für den UITableView-Subtyp:
%Vor%Und Implementierung:
%Vor%Und schließlich, die Codefragmente von UITableViewController:
%Vor%Hoffe, das hilft ...
Sie müssen die Berührungen der Responder-Kette weitergeben. Wir können dies tun, indem wir UITableView ableiten und touchesBegan (und andere, falls nötig) überschreiben und dann die Berührungen der Responder-Kette an den UITableViewController übergeben.
UITableViewTouch.h:
%Vor%UITableViewTouch.m:
%Vor%Tags und Links objective-c uitableview cocoa-touch uiviewcontroller uiresponder