2009-08-06 16 views
21

Estoy tratando de deshabilitar el desplazamiento en un UITableView al editar un UITextField incrustado en un UITableViewCell. Esto es solo para evitar que la celda se desplace fuera de la vista cuando se edita (y también para evitar algunos problemas de "Reciclaje" de células relacionadas). Mientras alrededor de google he visto que alguien sugirió lo obvio:deshabilitar el desplazamiento en una UITableView (iPhone SDK 3.0)

tableView.scrollEnabled = NO: 

o incluso

tableView.userInteractionEnabled = NO; 

Esto no funciona, aunque (al menos para mí ... iPhone SDK 3.0, trataron en el simulador) Establezco estas propiedades en NO, incluso compruebo al registrar que las propiedades están configuradas en NO, pero UITableView sigue respondiendo normalmente a los eventos táctiles. Y también se desplaza felizmente. No estaría tan preocupado si alguien en la red no dijera que esto realmente funciona.

¿Echo de menos algo? ¿O es la única alternativa que subclasifica UITableView para hacer que una funcionalidad disponible en su superclase (UIScrollView) vuelva a funcionar?

Respuesta

49

¿Ha intentado usar self.tableView.scrollEnabled = NO;?

A menudo he intentado que el código de la web no funcionara, simplemente por la falta del prefijo. Simplemente probé esto sin ningún problema.

No sé si esto funciona al encenderlo y apagarlo dinámicamente. Lo hace al menos trabajo para los ajustes permanentes al inicializar el objeto ...

2

me trataron:

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

y funcionó ([Ver auto] es mi punto de vista del controlador de vista actual, es decir, un UITableView)

La cosa es, recibo una advertencia:

'UIScrollView' puede no responder a '-setScrollingEnabled:'

En honor a la verdad, la propiedad es "scrollEnabled", pero funciona, sin embargo, con el ¡código mencionado!

Por lo tanto, la forma "correcta" de hacer las cosas, debe ser:

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

por lo que también funciona a la inversa, me está confundiendo ...

19

Si está utilizando UITableViewController, también tiene una propiedad tableView, sin necesidad de fundición. Esto funciona para mí:

self.tableView.scrollEnabled = NO; 

Avísame si eso te funciona.

+0

sí que funciona bro, ¿por qué la gente sólo se haga la pregunta y nunca piensan de dar señal de la American National Standard correctas? –

+0

Esto no funcionó para mi caso. Solo llamar al método setScrollEnabled me funciona. No es que eso tenga sentido ya que bajo la capucha deberían estar ejecutando el mismo código. – brodney

2

Ninguna de estas respuestas funcionó en mi caso. La vista de tabla siguió desplazándose aunque cada scrollView estaba deshabilitado.

Finalmente, encontré la solución en here, alegando que UITableViewController hace esto "para mí" cuando el teclado oculta el UITextView que se está editando.

La solución debe heredar de UIViewController en lugar de UITableViewController e implementar la funcionalidad de tabla requerida yo mismo.

6

¿Intentó que el guion gráfico anulara la selección del desplazamiento habilitado?

Scrolling Enabled : NO

1

si desea desplazarse sólo si su contenido no es visible a continuación, establezca:

yourTableview.alwaysBounceVertical = NO;

aquí si su contenido es visible entonces su tableview no se desplazará

Cuestiones relacionadas