2013-08-01 12 views
6

Sembra che il pulsante semplicemente non venga premuto.Come può un UIViewController all'interno di un UIPageController ottenere eventi di tocco?

Ho provato:

UIPageViewController Gesture recognizers

Tuttavia, ecco la cattura

se transizione di pagina di UIPageViewController è UIPageViewControllerTransitionStyleScroll quindi

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

sarà semplicemente vuoto.

Ho provato ad aggiungere il mio gestureRecoqnizers anziché il pulsante nella sottoview di UIViewControllers. Ancora non funziona.

Quindi ho un UIPageViewController che visualizza un UIViewController la cui vista ha un pulsante. Come faccio a premere quel pulsante?

Ho anche provato entrambe le soluzioni qui:

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

Nessuno lavora. Prima di tutto non posso disabilitare i recoqnizers di gesti di UIPageViewController perché non esiste una cosa del genere. Nella modalità scrollView, UIPageViewController non dispone di ricognitori di gesti.

Ho provato ad aggiungere i miei ricognizioni di gesti al mio pulsante ma quelli non vengono mai chiamati.

Desidero che UIPageViewController gestisca comunque lo scorrimento. Ma non toccare.

Non riesco ad accedere ai recoqnizers di gesture di UIPageViewControllers perché self.pageViewController.gestureRecognizers è vuoto. UIPageViewController sembra semplicemente "assorbire" tutti gli eventi tap. Quindi il mio pulsante non capisce.

posso aggiungere il pulsante di fronte UIPageViewController ma quel pulsante assorbirà l'azione strisciata cui voglio UIPageVIewController a gestire ancora.

A proposito, se si utilizza il modello da IOS (Creare un'applicazione pagina basata, e cambiare la transizione per scorrere le pageviewcontroller.gesturerecoqnizers saranno vuoti

- (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

Ha il pulsante ha un obiettivo e l'azione? – Wain

+0

ovviamente. Ho capito bene. Funziona bene se non all'interno di UIPageViewController. –

+0

Allora, perché il riconoscimento dei gesti? E hai impostato il tuo controller come delegato e controllato che i metodi delegati siano stati chiamati? – Wain

risposta

0

Forse è possibile impostare un sistema di riconoscimento gesto personalizzato . nel vostro UIPageViewController in questo modo, sarete in grado di filtrare attraverso UITouch Eventi, mediante l'attuazione di questo nella vostra delegato gesto riconoscitore (quello per il vostro 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; 
} 

questo, si dirà UIPageViewController g estureRecognizer per non preoccuparsi di toccare con un dito. Dovrai provarlo, ma penso che potrebbe fare il trucco. Il problema qui è che bisogna chiedere l'utente per un colpo a due dita ...

Controllare here per un'altra risposta

Problemi correlati