2009-08-06 22 views
21

Sto provando a disabilitare lo scorrimento in un UITableView durante la modifica di UITextField incorporato in un UITableViewCell. Questo serve solo per evitare che la cella venga spostata fuori dalla vista quando modificata (e anche per evitare alcuni problemi relativi al "Riciclo" della cella). Mentre googling in giro ho visto che qualcuno ha suggerito l'ovvio:disabilitare lo scorrimento in un UITableView (iPhone SDK 3.0)

tableView.scrollEnabled = NO: 

o anche

tableView.userInteractionEnabled = NO; 

Questo non funziona anche se (almeno per me ... iPhone SDK 3.0, provato sul simulatore Ho impostato queste proprietà su NO, controllo anche registrando che le proprietà sono impostate su NO, ma UITableView continua a rispondere normalmente agli eventi di tocco. E scorre anche felicemente. Non sarei preoccupato se qualcuno in rete non affermasse che questo funziona davvero.

Mi manca qualcosa? Oppure l'unica sottoclasse UITableView per rendere disponibile una funzionalità disponibile nella sua superclasse (UIScrollView)?

risposta

49

Hai provato a utilizzare self.tableView.scrollEnabled = NO;?

Ho provato spesso che il codice dal web non ha funzionato, semplicemente a causa della mancanza del prefisso self. L'ho appena provato senza problemi.

Non so se questo funziona quando si accende e si spegne dinamicamente. Lo fa, almeno lavoro per le impostazioni permanenti durante l'inizializzazione dell'oggetto ...

2

ho provato:

[(UIScrollView*)[self view] setScrollingEnabled:NO]; 

e ha funzionato ([vista auto] è la mia visione del controller della vista corrente, vale a dire, un UITableView).

Il fatto è che, ottengo un avvertimento:

'UIScrollView' non può rispondere a '-setScrollingEnabled:'

In tutta onestà, la proprietà è "scrollEnabled", ma funziona comunque con la codice di cui sopra!

Quindi, il modo "giusto" di fare le cose, dovrebbe essere:

[(UIScrollView*)[self view] setScrollEnabled:NO]; 

Perché funziona anche nell'altro senso, mi sta confondendo ...

19

Se stai usando UITableViewController, hai anche una proprietà tableView, senza bisogno di trasmettere. Questo funziona per me:

self.tableView.scrollEnabled = NO; 

Fammi sapere se questo funziona per voi.

+0

sì funziona bro, perché le persone chiedono soltanto domanda e non pensano mai di dare segno di spunta per ans giuste? –

+0

Questo non ha funzionato per il mio caso. Funziona solo per me chiamare il metodo setScrollEnabled. Non è quello che ha senso dal momento che sotto il cappuccio dovrebbero essere in esecuzione lo stesso codice. – brodney

2

Nessuna di queste risposte ha funzionato nel mio caso. La vista tabella continuava a scorrere mai, nonostante ogni scrollView fosse disabilitato.

Infine, ho trovato la soluzione in here, sostenendo che UITableViewController esegue questa operazione "per me" ogni volta che la tastiera nasconde la modifica di UITextView.

La soluzione deve ereditare da UIViewController anziché da UITableViewController e implementare personalmente la funzionalità della tabella richiesta.

6

Hai provato su storyboard deselezionando lo scorrimento abilitato?

Scrolling Enabled : NO

1

se si desidera scorrere solo se il suo contenuto non è visibile impostare:

yourTableview.alwaysBounceVertical = NO;

Qui se il contenuto è visibile allora la vostra Tableview non scorrerà

Problemi correlati