tipos tipo settitle que licencia guidelines dispositivo desarrollo buttons apple aplicacion ios ios5 ios6 uibutton uicontrol

tipo - uikit ios



UIButton no llama a la acción en iOS 5, pero funciona en iOS 6 (2)

En mi caso, también estaba usando un UITapGestureRecognizer general para descartar el teclado abierto por un campo de texto cuando el usuario UITapGestureRecognizer en cualquier lugar de la vista principal.

Arreglé esto solo agregando un reconocedor de gestos cuando aparece el teclado (vea

- (void)keyboardWillShow:(NSNotification *)n o

- (BOOL)textFieldShouldBeginEditing:(VDTextFieldWithError *)textField )

y luego quitar el reconocedor de gestos al ocultar el teclado (eliminando así el selector en el método selector del reconocedor en sí mismo)

Tengo un UIButton que se carga desde un archivo xib como una propiedad IBOutlet de un controlador de vista. viewDidLoad un selector al botón en viewDidLoad de mi controlador de vista:

[_myButton addTarget:self action:@selector(mySelector) forControlEvents:UIControlEventTouchUpInside];

En iOS 6, todo funciona, pero cuando ejecuto el simulador en iOS 5.0, no se llama al selector. El botón se resalta cuando se toca.

Otra cosa a tener en cuenta es que el botón está en una vista UIView que tiene un UITapGestureRecognizer agregado. El UITapGestureRecognizer para esta vista se llama en iOS 5.0 cuando se pulsa el botón, (no se llama en iOS 6, donde se llama al selector del botón).

No tengo un dispositivo que ejecute iOS 5, así que no lo he probado en un dispositivo, solo en el simulador.

¿Alguien sabe lo que está pasando aquí, y cómo resolverlo?


Usted ha explicado muy bien la causa del problema. En iOS 5, un UITapGestureRecognizer en la supervisión de un botón interfiere con la acción del botón. En iOS 6, solucionaron esto: introdujeron un evento UIView gestionRecognizerShouldBegin gestureRecognizerShouldBegin: y un botón devuelve automáticamente NO para un reconocedor de gestos de toque conectado a una vista de supervisión.

Para iOS 5, deberá usar un método de delegado en el reconocedor de gestos de toques para que no se reconozca si la vista tocada fue el botón.