2013-07-12 9 views
13

La mia app ha una vista tabella (con uno scorrimento verso l'alto ovviamente) e questa vista si apre e si spegne con un riconoscitore di gesti (come nell'app Facebook).La vista tabella non scorre quando utilizzo il riconoscimento dei gesti

Se si utilizza un pulsante per far scorrere [la vista tabella sullo schermo], funziona correttamente ma quando si utilizza un riconoscitore di gesti, la vista tabella non può più scorrere.

Ecco il codice del gesto riconoscitore con il problema:

[self.view addGestureRecognizer:self.slidingViewController.panGesture]; 

Qualcuno ha un'idea?

risposta

33

Il tuo gesto sta probabilmente impedendo il funzionamento della visualizzazione a scorrimento perché, per impostazione predefinita, è possibile riconoscere solo 1 gesto alla volta. Prova ad aggiungere te stesso come il delegato del vostro gesto e applicazione:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 

self.slidingViewController.panGesture.delegate = self; 

anche, aggiunge <UIGestureRecognizerDelegate> alla lista dei protocolli di implementare

+0

grazie mille per questa risposta! Ma non sono esperto in xcode, quindi quando ho implementato questo codice cosa devo fare dopo? – user2576304

+0

Quindi hai aggiunto il tuo controller come "delegato" del gesto e hai implementato il metodo sopra e hai ancora problemi? – Wain

+0

Come posso aggiungere il mio controller come delegato? questa nozione di delegato è sconosciuta per me mi dispiace – user2576304

1

Se ho capito bene l'opinione che si' re aggiungendo il riconoscitore di gesti è la vista tabella. Per impostazione predefinita, la classe UIScrollView (e implicitamente UITableView) utilizza il riconoscimento pan gesture per lo scorrimento e il riconoscitore di gesti interferisce con quello. Se si utilizza un'altra vista come contenitore per la vista tabella e si sta aggiungendo il riconoscimento di gesture di pan, dovrebbe funzionare.

5

Ecco la versione rapida:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
    return true 
} 
2

ho avuto lo stesso problema di definire lunga gesto stampa vista tabella e di non essere in grado di scorrere tavolo quando ho premere a lungo su di esso.

fissato dal:

1- aggiungendo UIGestureRecognizerDelegate

2- aggiungendo gesture.delegate = self (after you defined the long press gesture)

3- l'aggiunta di questa funzione:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}

+0

Qualche consiglio su come adattare questo quando il riconoscitore di gesti si trova in una classe di etichetta personalizzata utilizzata da tableview? : - | –

4

ho usato nel mio UIPangesture UItableview e da evitare id questo gesto ho usato sotto delegato,

//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll 
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { 
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer { 
     let translation = panGestureRecognizer.translationInView(superview) 
     if fabs(translation.x) > fabs(translation.y) { 
      return true 
     } 
     return false 
    } 
    return false 
} 
Problemi correlati