UICollectionViewCell mit UIScrollView bricht didSelectItemAtIndexPath
Ich habe eine UICollectionView
, die horizontal scrollt, um zu zeigen, eine UICollectionViewCell
zu einer Zeit. Jeder UICollectionViewCell
die hat ein vertikal-scrolling - UIScrollView
als Untersicht für das scrollen der Inhalt der Zelle. Es ist nur 90 % oder so der innere Teil der UICollectionViewCell
durch die UIScrollView
- also den äußeren Rahmen der Zelle nicht unter diese.
Es stellt sich heraus, dass der Teil des UICollectionViewCell
durch die UIScrollView
bricht die UICollectionView
delegieren didSelectItemAtIndexPath
. Wenn also ein einfaches Tippen passiert innerhalb der UIScrollView
diese Methode ist nicht aufgerufen, in der Erwägung, dass, wenn der tap passiert, auf dem äußeren Teil der Zelle, also außerhalb des UIScrollView
diese Methode ist aufgerufen.
Irgendwelche Vorschläge, wie das zu erreichen ist eine Einrichtung, wo es möglich ist, rufen die didSelectItemAtIndexPath
Methode, auch wenn das Tippen geschieht innerhalb der UIScrollView
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Tippen Sie auf die
UIScrollView
verwendet wird, um zu sehen, ob der Bildlauf durchgeführt werden soll.Sollten Sie fangen Sie die einzigen Antippen auf dem UIScrollView selbst und geben es an die umgebende
UICollectionViewCell
.Ich fand, dass der effektivste Ansatz ist, um zu stehlen die
panGestureRecognizer
ausgesetzt durch dieUIScrollView
und deaktivierenuserInteraction
auf diescrollView
. So erhalten Sie das Verhalten der scrollview aber pflegen Sie die Interaktion auf der Ansicht Sammlung. Auf IhremUICollectionViewCell
Unterklasse:Dies ist eine Methode, die Apple empfiehlt und zeigt in der WWDC 2014 session 235 (Advanced Scrollviews und Touch-Handling-Techniken)
Hier ein UIScrollView Unterklasse Ansatz, behält Zelle-Auswahl-Funktionalität, und ermöglicht auch für UIControl Auswahl (buttons, etc) sowohl in & außerhalb der scrollview.
Swift 3
Swift 2
Objective-C
Hinzufügen tap-Geste, um Ihre super Blick