UITapGestureRecognizer problema en iOS 9

Chicos,

hoy he actualizado mi iPhone a iOS 9 y ahora tengo problemas con un gestor de reconocimiento. Este es el error:

ADVERTENCIA: un reconocimiento de gestos (; target = <(action = onVideoTap :, target =) >>) se configuró en un storyboard / xib para agregarse a más de una vista (->; layer =>) a la vez, esto nunca fue permitido, y ahora se aplica. Comenzando con iOS 9.0, se colocará en la primera vista en la que se cargue.

No tuve este problema con iOS8. La vista contiene un UIImageView y un TextView. El reconocedor se dejó caer en ImageView y solo tiene references a esta vista.

Realmente no entiendo este problema. ¿Alguien me puede ayudar? Gracias 🙂

Creo que este problema sucede cuando utilizas el guión gráfico y agrega un Reconocedor de gestos de toque. Debido a algunos motivos, agregó más de una vista (vea la image).

introduzca la descripción de la imagen aquí

Por lo tanto, elimine otras vistas erróneas, deje la vista correcta.

introduzca la descripción de la imagen aquí

Esto estaba sucediendo conmigo porque quería usar un reconocimiento de gesto de TableViewCell con una image en un TableViewCell contenido en un TableView .

El problema es ese:

Agrego un TableViewCell pero tengo más de una TableViewCell (más de una image) en mi tabla.

iOS asignará UITapGestureRecognizer a la primera image en la primera celda, y otras celdas no tendrán gestos (el gesto ya se establecerá solo en la primera image).

Para resolver este problema, siga esto:

  1. Asegúrese de UIView la User Interaction Enabled para la UIView que desea asignar con TapRecognizerGesture .
  2. en la sub-vista TableViewCell en mi caso agregue un nuevo UITapGestureRecognizer . El código:

     internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()` 
  3. En su vista principal, TableView en mi caso y para cada célula, asigne UITapGestureRecognizer que realizó con cada celda a una function principal en la vista principal:

     cell.tapRecognizer1.addTarget(self, action: "img_Click:") cell.img.gestureRecognizers = [] cell.img.gestureRecognizers!.append(cell.tapRecognizer1) 
  4. Agregue la function que desea UITapGestureRecognizer para disparar onclick:

     func img_Click(sender: UITapGestureRecognizer) { print("ok") } 

Notas:

  • Puede usar una forma simple si no desea que la acción UITapGestureRecognizer actúe en la vista principal asignándola directamente a su subsplit.
  • en el paso 4 el nombre de la function debe ser el mismo que en la línea addTarget .

Ya lo arreglé. El storyboard está localizado y en un idioma asigné el recognizer dos veces a la vista de la image. De alguna manera, esto también parecía causar problemas en los otros storyboards.