2013-08-01 14 views
6

Wygląda na to, że przycisk po prostu nie jest wciskany.W jaki sposób UIViewController wewnątrz UIPageController może uzyskać zdarzenia dotykowe?

Próbowałem:

UIPageViewController Gesture recognizers

Jednak tu jest haczyk

jeśli strona przejście UIPageViewController jest UIPageViewControllerTransitionStyleScroll następnie

self.view.gestureRecognizers = self.pageViewController.gestureRecognizers; 
NSLog(@"%@",self.pageViewController.gestureRecognizers.description); 
NSLog(@"%@",self.pageViewController.gestureRecognizers.description); 

będzie po prostu pusta.

Próbowałem dodać własny gestRecoqnizers zamiast przycisku do podglądu UIViewControllers. Nadal nie działa.

Mam obiekt UIPageViewController, który wyświetla kontroler UIViewController, którego widok ma jakiś przycisk. Jak mogę nacisnąć ten przycisk?

Próbowałem też oba rozwiązania tutaj:

http://emlyn.net/posts/stopping-gesture-recognizers-in-their-tracks

Żaden działa. Przede wszystkim nie mogę wyłączyć rekombinatorów gestów UIPageViewController, ponieważ nie ma czegoś takiego. W trybie scrollView narzędzie UIPageViewController nie ma programów do recyrkulacji gestów.

Próbowałem dodać własne gesty recoqnizers do mojego własnego przycisku, ale te nigdy nie są wywoływane.

Chcę, aby UIPageViewController nadal obsługiwał przesunięcie palcem. Ale nie dotknij.

Nie mogę uzyskać dostępu do repozytorium gestów UIPageViewController, ponieważ self.pageViewController.gestureRecognizers jest pusty. UIPageViewController wydaje się po prostu "wchłonąć" wszystkie zdarzenia tap. Więc mój przycisk go nie dostał.

Mogę dodać przycisk przed UIPageViewController, ale ten przycisk pochłonie akcję przesuwania, którą chcę UIPageVIewController nadal obsługiwać.

Nawiasem mówiąc, jeśli używa szablonu z IOS (Tworzenie aplikacji opartych stronę i zmień przejście do przewijania pageviewcontroller.gesturerecoqnizers będzie pusta

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    // Configure the page view controller and add it as a child view controller. 
    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];//Turn this to scroll view 
    self.pageViewController.delegate = self; 

    SDDataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard]; 
    NSArray *viewControllers = @[startingViewController]; 
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL]; 

    self.pageViewController.dataSource = self.modelController; 

    [self addChildViewController:self.pageViewController]; 
    [self.view addSubview:self.pageViewController.view]; 

    // Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages. 
    CGRect pageViewRect = self.view.bounds; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
     pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0); 
    } 
    self.pageViewController.view.frame = pageViewRect; 

    [self.pageViewController didMoveToParentViewController:self]; 

    // Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily. 
    self.view.gestureRecognizers = self.pageViewController.gestureRecognizers; 
    NSLog(@"%@",self.pageViewController.gestureRecognizers.description); //This is empty 
    while (false); 
} 
+0

Czy przycisk mieć cel i działania? – Wain

+0

oczywiście. Rozumiem to. Działa dobrze, jeśli nie wewnątrz UIPageViewController. –

+0

Dlaczego więc rozpoznajesz gest? Czy ustawiłeś kontroler jako delegata i sprawdzisz metody delegatów? – Wain

Odpowiedz

0

Może założyć rozpoznawania zwyczaj gest UIPageViewController. w ten sposób będzie można filtrować poprzez UITouch Wydarzenia, wdrażając w ten gest delegata Rozpoznawania (jeden dla swojej UIPageViewController):

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gesture shouldReceiveTouch:(UITouch *)touch {    

if (touch.tapCount > 1) { // It will ignore touch with less than two finger 
     return YES; 
    } 
    return NO; 
} 

to powiesz na UIPageViewController g estureRecognizer, aby nie dbać o dotyk jednym palcem. Będziesz musiał spróbować, ale myślę, że to może załatwić sprawę. Problemem jest tutaj trzeba poprosić użytkownika o bezstykowa dwoma palcami ...

Sprawdź here dla innych odpowiedzi

Powiązane problemy