UICollectionView в UIScrollView: длительное нажатие
Я добавил UILongPressGestureRecognizer
к моему UICollectionView
это находится в подклассе UIScrollView
, (The UIScrollView
постранично, так что есть 3 горизонтально сложены UIViewController
с).
Мой код для добавления UILongPressGestureRecognizer
:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
longPress.delegate = self;
longPress.minimumPressDuration = 0.5;
longPress.delaysTouchesBegan = YES;
[self.collectionView addGestureRecognizer:longPress];
И NSLog
в моем handleLongPress:
метод. В настоящее время я держу на UICollectionViewCell
, он выделяется, но длительное нажатие не активируется. Я верю своему UIScrollView
подкласс потребляет длинное нажатие и не проходит вдоль UICollectionView
, Когда я поднимаю палец, didSelectItemAtIndexPath:
метод называется.
В моем UIScrollView
подкласс, единственная настройка, которую я имею, состоит в следующем:
- (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]]);
}
Это было сделано для того, чтобы в моем UITableView
, которая является одной из страниц моего UIScrollView
, Смахивание работает без проблем, и я пробовал ряд аналогичных проверок для UICollectionView
а также UICollectionViewCell
здесь, но еще не получил долгое нажатие, чтобы зарегистрироваться. Любой совет приветствуется.
Изменить: я добавил долгое нажатие на другой UICollectionView
и это функционально, но ячейка никогда не показывает выделенный / выбранный статус. Я предполагаю, что это ключ к пониманию того, почему я не могу заставить этот длинный жест прессы сработать.
1 ответ
Моя проблема заключалась в том, что я добавлял распознаватель жестов в -init
метод. Это не сработало. Просто переместите код в -viewDidLoad
исправил проблему.