2012-03-13 8 views
12

Un nuevo comportamiento en iOS 5.1 relacionado con las aplicaciones UISplitViewController parece estar interceptando el movimiento UISlider con resultados no deseados. Esto también podría aplicarse a los controles UISegmented y cualquier otra superficie de control que maneje gestos de izquierda a derecha.iOS 5.1 golpe gesto secuestrado por UISplitViewController - cómo evitar?

Con un UISplitView en orientación vertical, la vista maestra está normalmente oculta. Comenzando en iOS 5.1, un deslizamiento hacia la derecha en la pantalla muestra la Vista maestra en el lado izquierdo del dispositivo. El problema es que deslizar el pulgar de mi control UISlider se malinterpreta como un deslizamiento de pantalla: si le doy al pulgar UISlider un fuerte empujón hacia la derecha, aparece el panel maestro.

En mi aplicación, hay efectos secundarios no deseados (y problemas de rendimiento) con la aparición de la vista maestra.

Considero que este comportamiento es un error de Apple. ¿Alguna idea de cómo solucionarlo? ¿Puedo de alguna manera tener el UISlider capturar el gesto y procesarlo, sin pasarlo por la cadena de respuesta?

Gracias de antemano por cualquier idea!

+10

gracias a @Dimitris Tavlikos. Mientras sigo creyendo que Apple presentó un error con esto (UIControls como UISlider no debería competir con UISplitViewController en este gesto), existe una solución fácil: 'splitViewController.presentsWithGesture = NO; // SplitView no reconocerá el deslizamiento a la derecha' ¿De qué se trata publicar una pregunta que hace que de repente encuentres la respuesta en otro lugar? – jbbenni

+0

¿Qué ocurre si deseo conservar la funcionalidad predeterminada de gestos en el maestro pero solo desactivarla cuando el deslizador se está moviendo? Establecer 'presentsWithGesture' a' no' deshabilita el gesto en todas partes. – Mark13426

+0

No va a suceder. El control deslizante no se mueve porque el gesto se intercepta antes de que el deslizador comience a moverse. No solo puedes desactivar el secuestro mientras el control deslizante se está moviendo, porque el control deslizante ni siquiera comienza a moverse. Es una posibilidad remota, pero puede haber una manera de interceptar el gesto antes del procesamiento, luego determinar si habría iniciado el movimiento del deslizador y desactivar el secuestro en ese caso. Pero eso es complicado. La jerarquía del procesamiento de eventos está trabajando en contra de usted, ya que el sistema operativo obtiene la primera grieta en el gesto. – jbbenni

Respuesta

9

Apple confirmó el problema como un duplicado de un error previamente informado que se está investigando actualmente (error ID # 10170209).

Parece que la solución funciona bien por ahora.

Cuestiones relacionadas