У меня есть UICollectionView, который я создал программно. Я бы хотел, чтобы представление коллекции выглядело следующим образом:
1. User touches cell
2. Cell background color changes
3. User releases touch
4. Cell background color changes
Это должно быть быстрое изменение цвета, которое происходит непосредственно перед тем, как селектор, связанный с действием крана, будет выполнен, в котором диспетчер представлений, содержащий представление коллекции, удаляется из стека.
Я рассматривал этот вопрос: Фон изменения ячейки UICollectionView при нажатии
в котором имеется следующая сводка методов, используемых для этой цели:
// Methods for notification of selection/deselection and highlight/unhighlight events.
// The sequence of calls leading to selection from a user touch is:
//
// (when the touch begins)
// 1. -collectionView:shouldHighlightItemAtIndexPath:
// 2. -collectionView:didHighlightItemAtIndexPath:
//
// (when the touch lifts)
// 3. -collectionView:shouldSelectItemAtIndexPath: or - collectionView:shouldDeselectItemAtIndexPath:
// 4. -collectionView:didSelectItemAtIndexPath: or -collectionView:didDeselectItemAtIndexPath:
// 5. -collectionView:didUnhighlightItemAtIndexPath:
Я предполагаю, что мне нужно реализовать один из вышеперечисленных методов, начиная с "когда начинается касание" и "когда касание заканчивается". Но независимо от того, что я делаю, кажется, что цвет фона меняется, а затем остается неизменным. Вот пример того, что я пытался, который не работал:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
//pop vc
}
- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.contentView.backgroundColor = [UIColor redColor];
}
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
cell.contentView.backgroundColor = [UIColor greenColor];
}
В результате цвет фона ячейки изменяется только на красный. Я также рассмотрел этот вопрос: UICollectionView Выберите и отмените выбор вопроса и попытался реализовать [UICollectionView selectItemAtIndexPath: анимированный: scrollPosition:] и вызвал его внутри didSelectItemAtIndexPath, но это не сработало или. Источник данных собрания и делегат установлены.