2016-07-13 14 views
0

Ich habe eine UILongPressGestureRecognizer zu meiner UICollectionView hinzugefügt, die innerhalb einer Unterklasse von UIScrollView ist. (Die UIScrollView wird so ausgelagert, dass 3 horizontal gestapelte UIViewController s sind).UICollectionView in UIScrollView: Lange drücken

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
longPress.delegate = self; 
longPress.minimumPressDuration = 0.5; 
longPress.delaysTouchesBegan = YES; 
[self.collectionView addGestureRecognizer:longPress]; 

und ein NSLog in meiner handleLongPress: Methode:

Mein Code der UILongPressGestureRecognizer hinzuzufügen. Momentan halte ich eine UICollectionViewCell fest, es hebt hervor, aber die lange Presse ist nicht aktiviert. Ich glaube, dass meine Unterklasse UIScrollView die lange Presse verbraucht und nicht an die UICollectionView weitergeleitet wird. Wenn ich meinen Finger hebe, wird die didSelectItemAtIndexPath: Methode aufgerufen.

In meiner UIScrollView Unterklasse, die einzige Anpassung ich habe, ist folgendes:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer { 
// This line enables the swipe to delete in the Messaging VC. 
return ([otherGestureRecognizer.view.superview isKindOfClass:[UITableView class]]); 
} 

Diese Zelle klauen in meinem UITableView, getan wurde, damit die eine der Seiten meiner UIScrollView ist. Das Wischen funktioniert kein Problem, und ich habe eine Anzahl von ähnlichen Überprüfungen für UICollectionView und UICollectionViewCell hier versucht, aber habe nicht die lange Presse, sich noch zu registrieren. Jeder Rat geschätzt.

Edit: Ich habe den langen Druck auf einem anderen UICollectionView und es ist funktional, aber die Zelle nie zeigt hervorgehoben/ausgewählter Status hinzugefügt. Ich denke, das ist ein Hinweis darauf, warum ich diese lange Druckgeste nicht zum Feuern bekommen kann.

Antwort

0

Mein Problem war, dass ich die Gestenerkenner in der -init Methode hinzugefügt wurde. Das hat nicht funktioniert. Durch einfaches Verschieben des Codes auf -viewDidLoad wurde das Problem behoben.