2011-03-22 5 views
5

Estoy escribiendo un reemplazo UISwitch (con gráficos personalizados). He redefinido los toquesMovido y amigos, para que puedas arrastrar el widget entre Sí y No, al igual que con UISwitch.UIControl personalizado obtiene toques cancelados al desplazarse; ¿Cómo desactivo el scroll?

Si lo coloca en una vista de desplazamiento, los toques se cancelarán si el usuario mueve el dedo un poco en diagonal en lugar de perfectamente horizontal, y el desplazamiento entra en su lugar. Noté que UISwitch y UIButton no muestran este comportamiento, y el desplazamiento nunca se activa mientras se manipulan estos controles.

¿Cómo puedo decirle a UIKit que quiero un control exclusivo sobre estos toques, en efecto, deshabilitar el desplazamiento en toques Comenzar y permitir el desplazamiento hacia adentro terminado/cancelado? Estoy seguro de que hay algo obvio, pero he revisado los encabezados y la documentación de UIControl, UIResponder, UIView y UIScrollView y no he encontrado nada.

Nota: no quiero crear una subclase UIScrollView; No puedo imaginar que siendo la solución correcta, el control debería ser completamente independiente.

+1

Supongo que simplemente configurar scrollEnabled = NO en su UIScrollView entre tocar y retocar no es una opción aquí? – jnic

+0

@jnic: Correcto, no tengo referencia a la vista de desplazamiento desde la subclase de control. Una solución fea horrible sería iterar la supervista hasta que encuentre la vista de desplazamiento más cercana y desactivarla, pero estoy tratando de encontrar una solución bonita aquí. – nevyn

Respuesta

3

Configuración canCancelContentTouches = NO en la vista de desplazamiento, y exclusiveTouch = YES en un control personalizado permite este comportamiento, suponiendo que está satisfecho cambiando las propiedades en la vista de desplazamiento.

Cuestiones relacionadas