Tengo un UICollectionView con la costumbre de las células – Que tienen una UITextView que en su mayoría cubre la totalidad de la célula. Esto presenta un problema cuando se utiliza didSelectItemAtIndexPath. La única manera de activarlo es tocando fuera de la UITextView. Quiero que se active siempre que sea en la celda en la que toca, si hay una vista de texto o no. Cómo puede hacerse esto?

Yo sugeriría usar UIGestureRecognizer para cada celda y cuando grabadas para enviarlo a la vista de texto o lo que sea , tal vez no tal vez la mejor solución , pero me gustaría utilizar este 1
Problema resuelto mediante la adición de un UITapGestureRecognizer (gracias @Roma-MT) y el uso de indexPathForItemAtPoint:
Entonces voy a hacer una respuesta :).
Por favor, puedes compartir tu código? Gracias

OriginalEl autor imas145 | 2014-02-23

4 Comentarios

  1. 4

    Yo sugeriría usar UIGestureRecognizer para cada celda y cuando grabadas para enviar a UITextView o lo que sea , tal vez no tal vez la mejor solución , pero me gustaría utilizar este 1 debido a razones de simplicidad.

    OriginalEl autor Roma-MT

  2. 23

    didSelectItemAtIndexPath se llama cuando none of the subView of collectionViewCell respond to that touch. Como el textView responder a los toques, por lo que won't forward those touches a su superView, así collectionView no lo consigue.

    reemplazar hitTest:withEvent método de su collectionViewCell o CollectionView subclase y siempre regreso self de ellos.así que explícitamente hace collectionView como first responder.

    He añadido este código a mi UICollectionViewCell aplicación: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { return self; } Esta desactivado completamente el clic, ahora ni siquiera se desencadenan cuando se toca fuera de la vista de texto.
    está usted seguro de que no implementar touchesBegan método en UICollectionViewCell.Usted no debe reemplazar touchesBegan en la celda.
    Mientras se soluciona el problema, te puedo decir que no hay detalles de los métodos. Aquí está el código si usted está interesado - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } - (void)setTextViewText:(NSString *)text { self.textView.text = text; } - (void)setTitleLabelText:(NSString *)text { self.titleLabel.text = text; }
    Este fue el motivo por el problema que yo tenía. Mediante la desactivación de la interacción del usuario en mi texto vistas al tacto eventos comenzaron el reenvío a mi delegado.

    OriginalEl autor santhu

  3. 2

    ¿Anular touchesEnded: withEvent: ?

    Yo tenía el mismo problema de hoy y me encontré con que tengo algunas personalizado lógica en touchesEnded en uno de collectionview del contenedor de puntos de vista, y yo no la llame

     [super touchesEnded: withEvent:]

    cuando he terminado con mi personalizados lógica en touchesEnded.

    Después de la adición de la súper llamada, todo está bien.

    OriginalEl autor frankli

  4. 0

    Me encontré con este problema cuando yo tenía un desplazamiento de la vista de la toma de mi colección entera de vista de la célula. Mientras que todas las soluciones anteriores es probable que el trabajo bien, vine con mi propio trabajo elegante. Puedo poner un ‘select’ etiqueta debajo de mi desplácese a la vista. Ya que la etiqueta no es parte de la desplácese a la vista, pasa el toque de eventos en la vista de colección. También sirve como un buen indicador de que se requiere una acción del usuario.

    OriginalEl autor Justin Domnitz

Dejar respuesta

Please enter your comment!
Please enter your name here