11

Estoy intentando utilizar el objeto UITapGestureRecognizer que se puede encontrar en el Interface Builder. He arrastrado un único "UITapGestureRecognizer" de la biblioteca de objetos a una única vista xib. Luego creo un método IBAction a partir de este gesto de toque, para una prueba simple, solo estoy imprimiendo un mensaje "NSLog" en la consola una vez que hay un toque en la vista. He ejecutado esto y no se está llamando al método de toque. Hice clic derecho en la vista en IB y noté que había una advertencia "!" en vista de la "Colecciones de Outlook" Veo:Problemas al utilizar UITapGestureRecognizers en Interface Builder

Outlook Collections 
gestureRecognizers - Tap Gesture Recognizer (!) 

Los estados de alerta: UIView does not have an outlet collection named gestureRecognizers.

¿Qué necesito hacer para remediar esto?

+0

Pasé por el mismo ejercicio y me funciona. Estoy usando xCode 4.2 con iOS SDK5. El mensaje de advertencia está allí pero todavía imprime el mensaje NSLog. –

+0

¿Tiene alguna idea de lo que es la advertencia o cómo puede remediarse? – 5StringRyan

+1

Sospecho que gestureRecognizers no se define como IBOutlet, pero de alguna forma cuando dejamos caer el control gestureRecognizer en el IB y sabe cómo conectarlo con nosotros. –

Respuesta

0

Eche un vistazo a this.

Específicamente la captura de pantalla de la configuración de salida. Espero que eso ayude.

1

Dos cosas para comprobar: ¿su controlador de vista (el que contiene la UIView) implementa el protocolo UIGestureRecognizerDelegate?

Una vez que implementa UIGestureRecognizerDelegate, asegúrese de haber configurado la propiedad de delegado del reconocedor de gestos en el controlador de vista. Usé un guión gráfico para hacer la conexión.

Hago esto y no obtengo ningún error (IOS 5.1, xCode 4.3).

1

Hice esto para agregar un gesto doble toque para mi barra de navegación, por completo en el código y lo encontraron muy fácil de usar ....

En vista se cargó ...

//Add double tap gesture to Navbar 
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc] 
            initWithTarget:self action:@selector(navigationBarDoubleTap:)]; 
tapRecon.numberOfTapsRequired = 2; 
[self.navigationController.navigationBar addGestureRecognizer:tapRecon]; 

Entonces tengo un método ...

#pragma mark - Auto Refresh Method 
- (void)navigationBarDoubleTap:(UIGestureRecognizer*)recognizer { 
     //Do Stuff Here 
} 

Quizás podría adaptar esto.

Plasma

0

La advertencia no debería ser un problema. Solo está allí porque puede agregar múltiples reconocedores de gestos como una colección de IBOutlet, pero esto no es necesario.

Activar zombies en su esquema para obtener mejores mensajes de error durante la depuración. En mi caso, el controlador de View que estaba tratando de enviar mensajes con mi gestor de gestos no estaba siendo instanciado en Interface Builder.

Además, no es necesario implementar el protocolo de delegado y funcionará en cualquier UIView.

4

Creo que no ha conectado correctamente el UITapGestureRecognizer a su código.

Cuando suelta UITapGestureRecognizer en su xib Xcode realiza automáticamente las conexiones de toma de referencia necesarias.

Solo necesita crear un método IBAction en su código y luego cablearlo al selector de la U .

He adjuntado capturas de pantalla para su referencia.

enter image description here

enter image description here

Espero que esto ayude !!

4

La solución Mr.Anonymous es correcta. No es necesario implementar el delegado en el controlador de vista ni configurarlo. Sin embargo, debe verificar que la Interacción del usuario habilitada esté marcada (en la ventana de propiedades a la derecha), especialmente si está conectando el reconocedor a una etiqueta.

2

Olvidé comprobar que Interacción del usuario habilitada debe verificarse para las vistas que se agrega el reconocedor de gestos.

Cuestiones relacionadas