2011-09-24 12 views
23

Me he dado cuenta de un ligero retraso en el estado resaltado de un UIButton cuando se toca si está dentro de un UIScrollView (o una vista de tabla). De lo contrario, el estado resaltado es bastante instantáneo.¿Es posible eliminar el retraso del estado resaltado de UIButton dentro de UIScrollView?

Supongo que esto debe ser por diseño para dar la oportunidad al usuario de desplazarse. Pero parece que el botón no responde a mí. ¿Hay alguna manera de arreglar esto?

Respuesta

52

De hecho, es una opción de diseño. Necesita este pequeño tiempo para diferenciar un desplazamiento (panGesture) de un toque. Si elimina esta demora, el usuario no podrá desplazarse si coloca el dedo sobre el botón, lo que no es una buena experiencia para el usuario.

Como una vista de desplazamiento no tiene barras de desplazamiento, debe saber si un toque indica un intento de desplazamiento frente a un intento de rastrear una subvista en el contenido. Para hacer esta determinación, intercepta temporalmente un evento de aterrizaje iniciando un temporizador y, antes de que el temporizador se dispare, verifica si el dedo que toca hace algún movimiento. Si el temporizador se dispara sin un cambio significativo de posición, la vista de desplazamiento envía eventos de seguimiento a la subvista tocada de la vista de contenido.

del UIScrollView Documentation

No recomendaría deshabilitar el retraso, pero si insiste, se puede establecer en el constructor de interfaces (seleccionar el desplazamiento Vista, y en el panel derecho, bajo "rebota Zoom "), o utilizando este código:

scrollView.delaysContentTouches = false 
+0

Thanks! Respuesta perfecta. Lo pensare. Ojalá haya una forma de deshacerse de la demora pero aún así habilitar el desplazamiento. – pixelfreak

+2

@pixelfreak no es imposible crear una vista de desplazamiento personalizada que haría las dos cosas, pero los usuarios de iOS están acostumbrados a este comportamiento y sería mejor si no se metiera con los conceptos básicos de interacción de usuario de iOS. –

+0

¿Es posible hacer esto solo para subvistas específicas de la vista de desplazamiento, como la pregunta? –

Cuestiones relacionadas