2012-03-07 9 views
7

Estoy tratando de crear un menú deslizante (algo así como en las aplicaciones de Facebook/Twitter) y mi versión utiliza con éxito gestos de desplazamiento para este efecto. La clase se llama "SlideMenu".Pan gesto interfiere con UISlider

estoy instancias de un SlideMenu en mi ViewController, y luego añadir un montón de elementos de interfaz de usuario como subvistas en él, como UISliders, UIButtons, etc.

La cuestión es que el gesto sartén parece interferir con el UISlider, ya que se deslizará, pero se detendrá después de una distancia muy corta. Encontré un fragmento de código en una respuesta (Gesture problem: UISwipeGestureRecognizer + UISlider), pero no estoy seguro de cómo implementarlo o si funciona con mi diseño.

El código es la siguiente:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if ([touch.view isKindOfClass:[UISlider class]]) { 
     // prevent recognizing touches on the slider 
     return NO; 
    } 
    return YES; 
} 

He intentado añadir a mi clase y mi SliderMenu ViewController, pero no dados. ¿A dónde va esto? ¿Qué delegado tengo que configurar (si hay alguno?) Gracias

Respuesta

9

Básicamente, en cualquier controlador o vista que esté manejando el reconocedor de gestos. Cuando crea el reconocedor de gestos, puede establecer su delegado en algún objeto (probablemente su controlador de vista) y hacer que este objeto implemente el UIGestureRecognizerDelegate. Una de las llamadas de delegado es gestureRecognizer:shouldReceiveTouch, por lo que solo tiene que copiar el código que colocó arriba en la implementación de su objeto (ver controlador).

+1

Gracias. El detalle que me estaba perdiendo era configurar el delegado del gesto en uno mismo. ¡Todo bien ahora! – user339946

+0

¡¡¡Gran respuesta !!, minusing – l0gg3r

+0

Trabajando para mí. Yo, pero ahora mi método que debe ser invocado para el panning no se llama. ¿Cómo puedo invocar este método? – Hassy

Cuestiones relacionadas