Ansichten in benutzerdefinierter UICollectionViewCell, die keine Berührungsereignisse empfangen

8

Ich habe ein UICollectionView , das horizontales und vertikales Scrollen unterstützt. Jede Sammlungsansichtszelle ist eine Unterklasse von UICollectionViewCell und sie werden von einer NIB geladen, die UIButton , UITableView und sogar noch eine UICollectionView enthält. Sie sind alle in TPKeyboardAvoidingScrollView .

Das Scrollen funktioniert perfekt sowohl horizontal als auch vertikal, aber es empfängt keine Berührungsereignisse für die Elemente in der einzelnen UICollectionViewCell . Wenn ich eines der Elemente berühre, sage eine Schaltfläche, die Teil von UICollectionViewCell ist, dann bekomme ich nur das didSelectItemAtIndexPath -Ereignis auf dem UICollectionViewDelegate - ich kann kein Touch-Ereignis an einen der beiden übergeben Unteransichten der Sammlungsansichtszelle, auf die der Tap erfolgt.

    
patschiboy 23.03.2014, 09:54
quelle

3 Antworten

19

Nachdem ich einige andere stackoverflow-Artikel gelesen hatte, fand ich schließlich, was mein Problem verursachte - die XIB-Datei, die ich zur Initialisierung der UICollectionViewCell verwendet hatte, hatte ein normales UIView-Element am Stamm; obwohl es als Unterklasse einer UICollectionViewCell markiert war und sich auf andere Weise gut verhielt, verhinderte das, dass die Ereignisse durchflossen wurden.

Also - wenn Ihre benutzerdefinierte UICollectionViewCell XIB-Datei im Root-Verzeichnis so aussieht (siehe das Symbol neben der Dateneingabe-Matrixansicht, das ist der Name für meine UICollectionViewCell-Unterklasse), dann haben Sie das gleiche Problem:

Meine Lösung bestand darin, der XIB eine geeignete UICollectionViewCell-Klasse hinzuzufügen, dann alle Unteransichten unter der vorhandenen Dateneingabe-Matrixansicht in diese zu verschieben, die alte Wurzel zu löschen und dann die Outlets erneut zu verbinden. Das Endergebnis sieht so aus:

Sie können das andere verwendete Symbol sehen - das ist was Sie wollen. Sobald ich mein XIB so änderte, wurden die Ereignisse durchgeleitet.

In der XIB-Rohdatei (Ansicht als Quelle) führte die nicht arbeitende Version das Wurzelelement als

ein %Vor%

während die Arbeitsversion dieses Wurzelelement in

geändert hat %Vor%

Hoffe, das spart jemand anderen ein paar Stunden ...

    
patschiboy 23.03.2014 10:49
quelle
0

a haben das gleiche Problem für UIButton in meiner benutzerdefinierten UICollectionViewCell

Hinzufügen dieser Funktion zu meinem UICollectionViewCell gelöst Problem für mich:

%Vor%     
user3511326 16.10.2014 21:45
quelle
0

Wenn Sie eine Ansicht / scrollView im Stammverzeichnis haben und diese an backgroundView oder selectedBackGroundView angefügt ist, entfernen Sie sie und es funktioniert einwandfrei.

    
NaXir 31.03.2015 12:10
quelle