2016-03-01 20 views
5

che so di questo comando:Come abilitare/disabilitare lo scorrimento in UITableView?

self.tableView.scrollEnabled = true 

La domanda è: voglio bloccare lo scorrimento in base alla posizione ScrollView. Per questo faccio:

let topEdge = scrollView.contentOffset.y 
    let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 

    if topEdge >= followersViewEdge { 
     self.tableView.scrollEnabled = true 
    } 

funziona, ma il problema è che non bloccare o sbloccare lo scorrimento immediatamente. Per bloccare o sbloccare lo scorrimento di UITableView ho bisogno di rilasciare il mio dito dallo schermo e scorrere di nuovo. In questo caso funziona.

Voglio farlo immediatamente, quindi blocca e sblocca lo scorrimento mentre faccio scorrere lo schermo. Come posso farlo?

UPDATE

mio codice funziona. Non è un problema. Il problema è che ho bisogno di apportare queste modifiche immediatamente, senza rilasciare il mio dito dallo schermo.

Quindi, non rispondermi come bloccare lo scorrimento! So come farlo.

+0

prova 'scrollViewDidScroll' delegato? – zcui93

+0

@ zcui93 il mio codice funziona. Quindi, sì, ho già collegato il delegato. Per favore, leggi attentamente –

+0

Nulla di ciò che hai detto lo ha detto. – zcui93

risposta

1
  1. Selezionare Tableview
  2. scegliere Attributo insepector
  3. Nella sezione vista di scorrimento, deselezionare Scrolling proprietà Enabled
+0

Il mio codice funziona. Non è un problema. Il problema è che ho bisogno di apportare queste modifiche immediatamente, senza rilasciare il mio dito dallo schermo –

+0

È la tua vista tabella è sotto-visualizzazione in vista di scorrimento? –

+0

sì, ci sono tabelleView all'interno del mio ScrollView –

0

È necessario configurare il sistema di riconoscimento gesto padella per la visualizzazione tavolo e continuare ad ascoltare ascoltatore.

All'avvicinarsi può bloccarlo.

if topEdge >= followersViewEdge { 
     self.tableView.scrollEnabled = true 
    } 

Tramite il riconoscimento del gesto della panoramica, è possibile bloccarlo/sbloccarlo.

if(self.tableView.scrollEnabled) { 
     self.tableView.scrollEnabled = false 
    } else { 
     self.tableView.scrollEnabled = true 
    } 

Esempio

 // Added the Pan Recognizer for capture the touches 
    UIPanGestureRecognizer *panReconizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panReconizer:)]; 
    panReconizer.maximumNumberOfTouches = panReconizer.minimumNumberOfTouches = 1; 
    [self.tableView addGestureRecognizer:panReconizer]; 


    - (void)panReconizer:(UIPanGestureRecognizer *)pan { 
     NSLog(@" .............. pan detected!! ..................."); 
     if(self.tableView.scrollEnabled) { 
      self.tableView.scrollEnabled = false 
     } else { 
      self.tableView.scrollEnabled = true 
     } 
    } 
+0

dopo aver modificato scrollEnabled. Devo rilasciare il mio dito dallo schermo e scorrere di nuovo. Voglio renderlo come continua della singola scroll –

+0

Ora ho trovato il tuo caso, quindi dovresti usare pan gesture. Pls si riferisce sopra l'esempio aggiornato. –

+0

Si consiglia di apportare modifiche al tocco. Inoltre richiede un altro tocco per utilizzare il TableView. Quindi, non è quello di cui ho bisogno. Usi l'app Twitter per iOS? Voglio creare la schermata della pagina di profilo –

0

vigore le contentOffset al valore massimo durante lo scorrimento:

let topEdge = scrollView.contentOffset.y 
let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 

if topEdge >= followersViewEdge { 
    self.tableView.contentOffset.y = followersViewEdge 
} 
+0

e cosa mi darà? –

+0

ti darà quello che hai chiesto, cioè un TableView che non può scorrere più del valore 'followersViewEdge' – tgyhlsb

+0

no, non mi aiuta affatto. Funziona allo stesso modo e, inoltre, scorre il mio contenuto nella parte inferiore di –