6

Ich habe ein sideview-ähnliches Menü für das iPhone erstellt, für das ich das Containership-Konzept zum Hinzufügen von Kind-View-Controllern im übergeordneten View-Controller verwendet habe. Wenn der Benutzer auf die Menüschaltfläche in der Navigationsleiste klickt, ändere ich einfach den Rahmen des Kindansicht-Controllers, um ihn wie ein aufschlussreiches Menü zu animieren, so dass der Kindansicht-Controller um die Hälfte seines Rahmens nach rechts abgeschnitten wird.So erkennen Sie das Touch-Ereignis in einem Kind-Viewcontroller in ios

Jetzt ist mein Problem, wenn Benutzer auf einen Teil des Kind View-Controller klopft Ich möchte nur seine Eltern View-Controller, Touch-Ereignis auf seinen Kind View-Controller gefeuert hat, so dass Eltern View-Controller den Rahmen der Kind-Ansicht zurücksetzen kann Controller, um es zu animieren, wie nahe das halb aufgedeckte Menü.

Ich habe tippen Geste und habe es zu den einzelnen untergeordneten Ansicht der Kind View Controller Subviews hinzugefügt. Wenn Sie also auf eine der Teilansichten tippen, wird der Elternsicht-Controller über das Berührungsereignis benachrichtigt.

Das Touch-Ereignis funktioniert gut für die Hauptansicht des Child-View-Controllers, aber jede Berührung eines Buttons erkennt das TAP-Event nicht.

Ich weiß nicht, wo ich mich irre. Bitte helfen Sie mir, den Eltern-View-Controller über alle Berührungen in seinem Kind-View-Controller zu benachrichtigen. Danke im Voraus.

+0

Können Sie gleiche verwenden Open-Source-Bibliothek für Drower? Ich habe RESideMenu benutzt. Es hat einige interessante Wirkung und hat alle Tap-Handhabung eingebaut. –

+0

Nein, ich hatte eine Option, aber ich möchte keine Bibliotheken von Drittanbietern verwenden :) –

+0

Schaltflächen werden Tap-Ereignis abbrechen ... disable thir userenteraction wenn halb geschlossen – amar

Antwort

7

Sie sollten diese nicht

„Ich Tippgeste verwendet haben und haben es in die jedes Kind Blick auf die Ansicht-Controller Subviews Kind hinzugefügt“

Sie sollten auf eine Überlagerungsansicht tun hinzufügen der Ansicht des elterviewcontrollers, nachdem Sie das Menü geöffnet haben. so wird es oben links und rechts Ansichten bleiben.

sollten Sie einen Tap-Erkenner hinzufügen, um die Overlay-Ansicht zu zerstören/auszublenden und dort Menü Animation ausblenden. Siehe unten stehenden Code

+0

Vielen Dank Bruder !! Es funktioniert :) –

+0

Gern geschehen :) –

1

Ich glaube, Sie haben möglicherweise vergessen, die userInteractionEnabled Eigenschaft Ihrer Tasten auf YES, die sie stoppt Ereignisse zu stoppen.

Wenn Sie Ereignisse an den anderen View-Controller übergeben, ist es besser, ein Delegate-Protokoll zu erstellen, das der Child View-Controller zum Senden von Nachrichten an den übergeordneten View-Controller verwenden kann.

+0

** userInteractionEnabled ** ist bereits eingestellt !! –

0

Wenn Ihnen Touch-Ereignisse für Schaltflächen in den Unteransichten fehlen, versuchen Sie, ein Ziel für die Schaltfläche hinzuzufügen.

[button addTarget:<#(id)#> action:<#(SEL)#> forControlEvents:UIControlEventTouchUpInside]; 

Um elderViewcontroller zu benachrichtigen Sie Ihre Benachrichtigung von Ihrer Selektor-Funktion in ChildViewController.

[[NSNotificationCenter defaultCenter] postNotificationName:@"notificaiton_name" object:object_you_want_to_send]; 

Und in Ihrer Eltern-View-Controller-Add Beobachter für die NSNotificationCenter

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(method_you_want_to_call:) name:@"notificaiton_name" object:nil]; 
Verwandte Themen