9

Recibo un NSInvalidArgumentException con la razón: -[UITapGestureRecognizer initWithCoder:]: unrecognized selector sent to instanceIOS5 Estable aplicación de estrellarse en iOS4.3 Simulador

mi entendimiento era que UITapGestureRecognizers fueron apoyados en ios4.x?

¿es posible cargar un archivo xib diferente para las versiones de sub ios5?

+2

Son compatibles en 4.x, la cosa es que no puedes simplemente colocarlos en xib (supongo que ese es el caso aquí). No puede establecerlo en el código o hacer otro xib y cargarlo después de verificar la versión. – mit3z

+0

Consulte [esta pregunta potencialmente relacionada] (http://stackoverflow.com/questions/6520932/uigesturerecognizer-in-uiview-object). Puede ser que necesite crear una instancia de su UITapGestureRecognizers de otra manera. –

+0

Me parece que su reconocedor está siendo desasignado ... UIGestureRecognizer no responde a -initWithCoder: y es por eso que está fallando. (Creo que el puntero de desasignar a su objeto UIGestureRecognoizer está siendo asumido por otro objeto, que se supone que responde a initWithCoder: ...) –

Respuesta

17

Como @ mit3z afirma en su comentario sobre la pregunta original, iOS 4.3 solo admite esta característica cuando se configura manualmente con el código. No es compatible con Interface Builder.

Apple nos habría ahorrado todo este dolor si simplemente añadieran esto como una advertencia de tiempo de compilación.

+1

Esto resolvió mi problema. Para obtener una forma rápida de agregar GestureRecognizer por código, consulte la respuesta aquí: http://stackoverflow.com/questions/5954934/issue-with-a-uitapgesturerecognizer –

1

Creo que tiene un objeto compatible con NSCoding que se desasigna antes del colapso. El UITAPGestureRecognizer se asigna a su dirección y cuando el objeto desaparecido (pero no su referencia) intenta llamar a initWithCoder en sí mismo, en realidad llama a este método en su gestureRecognizer.

Entonces su problema proviene de ese objeto desasignado pero no de su gestureRecognizer.

Asegúrese de conservar todas sus propiedades de IBOutlet.

+0

llamo retener en todos los IBOutles. Estoy usando ARC ... – Andy

+0

No puede usar tanto ARC como call retain. Si llama para conservar la compilación, no está utilizando ARC. –

+0

Supongo que quiere decir que está escribiendo '' fuerte'' o '' reteniendo '' escribiendo sus propiedades de IBOutlet, sin llamar realmente retener los objetos mismos. Si realmente estuviera llamando 'retener' con arco, el código no se compilaría. – btomw