Tengo un collectionView con algunas celdas en él. En la parte superior de cada celda tengo un botón, así que cuando presiono el botón la vista cambia a otro controlador.

Mi problema ahora es que cuando toco la celda e intento desplazarme, no lo hace.
(Debido al botón en la parte superior)

Para el mismo problema en UIScrollView hay este método:

override func touchesShouldCancel(in view: UIView) -> Bool {
    // Makes the scrollView scrollable when there's a button on top.
    return true
}

También probé este método en su lugar:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print("Nothing")
}

Y no pasa nada.

Cómo puedo arreglar esto ?

0
Sam 22 ene. 2018 a las 23:36

3 respuestas

La mejor respuesta

En su método viewDidLoad() de su conjunto ViewController collectionView.canCancelContentTouches = true. Espero que solucione su problema.

0
Umair Aamir 22 ene. 2018 a las 22:11

Prueba esto:

func viewDidLayoutSubviews() {

   super.viewDidLayoutSubviews()
   self.scroller.isScrollEnabled = true
}

Según la respuesta de Mark Kennedy, aquí: UIButton dentro de UIScrollView desactiva el desplazamiento

0
VSMelo 22 ene. 2018 a las 21:00

En el método de toque de botones, compruebe si CollectionView se desplaza o no. Por Me gusta esto

if collectionView.isDragging || collectionView.isDecelerating {
 //`Don't go to Another View Controller`
}

Intentalo.

0
jay patel 23 ene. 2018 a las 07:14