2013-12-09 7 views
5

Ho uno scenario in cui ho due UITableViews come una visualizzazione secondaria in un UIView principale:Limite UITableView panoramica a 1 dito

UIView (frame = schermo intero)
+ --- UITableView (frame = ~ 1/3 dello schermo)
+ --- UITableView (frame = secondo ~ terzo dello schermo)

voglio rilevare un tre dita scorri verso l'alto su tutta l'area dello schermo (e anche consentire all'utente di pan UITableViews su e giù con almeno un dito).

Ho un UISwipeGestureRecognizer collegato a UIView con numberOfTouchesRequired = 3.

Ho provato questi:

  • Impostazione entrambi UIPanGestureRecognizers interni maximumNumberOfTouches-1 su entrambi UITableViews. A mio avviso, ciò dovrebbe impedire l'uso di due o tre padelle su UITableViews, ma non è così. Se imposto il valore enabled su NO con questi UIPanGestureRecognizer, i tocchi vengono passati correttamente al superview, ma la panoramica/scorrimento non funziona.
  • Chiamando panGestureRecognizer requireGestureRecognizerToFail: con il mio UISwipeGestureRecognizer su entrambe le UITableViews. Funziona in parte, ma il panning attende fino a quando il passaggio non è stato completato e si sente molto impacciato.
  • Ignorare UITableView con l'impostazione shouldRecognizeSimultaneouslyWithGestureRecognizer: per restituire SÌ, che consente di rilevare lo scorrimento a tre dita. Tuttavia, le UITableViews sotto pan/scrollano involontariamente.

Quindi, come limitare il numero di tocchi di panoramica a 1 (o 2) e lasciare che il tre dita UISwipeGestureRecognizer riconosca tre sfioramenti?

risposta

0

Prova sovrascrivendo canPreventGestureRecognizer: sulla parte superiore (schermo intero) UIPanGestureRecognizer, tornando NO per ciascuno dei due riconoscitori tavolo vista gesto.

Mi piacerebbe anche provare l'override canBePreventedByGestureRecognizer: su ciascuno dei due tabella di riconoscimento vista gesto di restituire NO nel caso del più alto UIPanGestureRecognizer.

Mi sono imbattuto in una situazione simile a te molto tempo fa e non ricordo come l'ho risolto (il progetto è finito da tempo), ma mi sembra di ricordare di giocare con i metodi sopra menzionati e alla fine di ottenerlo lavorare.