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.