2016-06-02 4 views
1

Ich habe eine UIPageViewController, die Bilder mit Transition style scroll anzeigt. Ich möchte mit tap und pan Gesten umgehen, um dies zu tun, habe ich ein wenig hack Putting eine andere view oben auf der uipageviewcontroller und zuweisen tap und pan Gestenerkenner. In diesem Fall verwende ich -setViewControllers:direction:animated:completion:, um Swipes auszuführen, wenn ich Schwenkbewegungen nach links oder rechts erkenne.UIPageViewController programmgesteuert ermöglichen Datenquelle aufgerufen werden

Mein Problem ist, dass bei Verwendung -setViewControllers:direction:animated:completion: die Datenquellenmethoden viewControllerBeforeViewController und viewControllerAfterViewController nicht aufgerufen werden. Auch die Delegate-Methode -pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: wird nicht aufgerufen.

Was muss ich tun, damit diese Methoden mit setViewControllers aufgerufen werden?

Antwort

2

Ich glaube, Sie UIPageController erhalten kann gesture recognisers, und verwenden sie für Sperr- oder UIPageController Interaktion ermöglichen durch die Methode von UIGestureRecogniser mit:

- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer 

Wenn Sie setViewControllers ... Methoden von dataSource wird nicht aufgerufen, weil Sie ViewControllers bereitgestellt haben. Sie können auch die Fertigstellung der erscheinenden Animation im Completion-Block dieser Methode durchführen. (Sie können durch Selbst Methoden der Datasource und Delegierter nennen)

UPD

Als ich gleiche Aufgabe hatte, ich benutzerdefinierte Seitenansicht implementiert (basierend auf UIScrollView in Seiten Zustand) und verwendet Geste recognisers der scrollView, um das Scrollen zu vermeiden, während die Pan-Geste innerhalb einer Seite erkannt wird. Ich kann mich nicht erinnern, warum ich benutzerdefinierte Steuerung implementiert habe, vielleicht weil ich keine Lösung für dasselbe Problem finden kann. Ich erinnere mich, dass meine Seitenansicht dataSource verwendet hat, um Ansichten für die Seiten zu erhalten. Ich denke, Sie können benutzerdefinierte Steuerung mit Ihrer speziellen Logik implementieren.

+0

UIPageViewController mit Übergangsstil Scroll liefert keine Gestenerkenner. es ist nur von der Übergangsart Seite curl :( – binsnoel

+0

Sie richtig, ich täusche mich. Ich habe die Antwort aktualisiert. –

+0

Danke! als Sie erwähnten, dass ich den Vollendungsblock mein Selbst behandeln kann, gab es mir eine Idee, mein zu lösen Problem Soll ich dies als eine Antwort markieren oder sollte ich meine Lösung als eine andere Antwort posten? – binsnoel