2016-04-18 19 views
8

Ho uno tableView all'interno di uno pageViewController e quando si scorre su una cella per far apparire l'opzione per eliminare la cella il gesto viene riconosciuto solo in determinate circostanze, ad esempio strisciando molto velocemente e aggressivamente.Scorri per eliminare su una tabellaVisualizza all'interno di una paginaViewController

Immagino che stia succedendo perché non è sicuro se il gesto di scorrimento sia inteso per lo pageView o lo tableView. C'è un modo per determinare in modo specifico dove si sta verificando il gesto di scorrimento per abilitare una buona visualizzazione del pulsante di cancellazione?

+0

È possibile aggiungere un pulsante di modifica. Quindi, in modalità di modifica, puoi disabilitare il gesto di scorrimento del controller di pagina (impostando il delegato nil). – Maik639

risposta

3

Ho avuto lo stesso problema. Ho trovato una soluzione che funziona bene.

Inserire questo nel viewDidLoad func.

if let myView = view?.subviews.first as? UIScrollView { 
    myView.canCancelContentTouches = false 
} 

PageViewControllers hanno una sottoview generata automaticamente che gestisce i gesti. Possiamo impedire a queste subview di cancellare i contenuti. La tableview sarà in grado di acquisire swipes per il pulsante delete, mentre interpreta ancora i swip che falliscono i requisiti di gesture di tableview come swip di pagina. Il pulsante Elimina verrà visualizzato nei casi in cui tieni premuto, scorri o scorri "in modo aggressivo".

+0

Ive ha aggiunto questo al mio UIPageViewController viewDidLoad, quello che succede a volte è lo swipe per eliminare gli spettacoli sul tableview, ma il più delle volte passa semplicemente alla pagina successiva .... – raklos