UICollectionView: дополнительный вид блокирует выбор элементов

Я реализую макет календаря для UICollectionView. Есть ячейки «события» и дополнительный вид «текущее время». В соответствии с дизайном я отображаю представление «текущее время» над событиями.

Проблема в том, что если пользователь коснется представления «текущее время», ячейка «событие» не может быть выбрана.

Я попытался переопределить метод - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event дополнительного просмотра и вернуть nil, но он никогда не вызывался. userInteractionEnabled равно YES для этого дополнительного вида.

Любые идеи, как я могу перенести штрихи из дополнительного вида в UICollectionView ячеек?


person Vitaly S.    schedule 25.06.2014    source источник
comment
Не могли бы вы опубликовать несколько скриншотов того, чего вы пытаетесь достичь?   -  person Rivera    schedule 30.06.2014


Ответы (2)


Я не совсем понимаю, чего вы пытаетесь достичь, и, возможно, немного кода поможет, но я предполагаю, что вы хотите нажать что-то в представлении заголовка и выбрать сегодняшние события?

Если это так, вам нужно зафиксировать прикосновение, возможно, с помощью UIButton в дополнительном представлении. Тогда вы хотите позвонить

[_collectionView selectItemAtIndexPath:myIndexPath animated:YES scrollPosition:position];

Если вы говорите, что прикосновение к дополнительным блокам просмотра затрагивает представление коллекции, я бы проверил кадры, поскольку у вас может быть что-то поверх чего-то еще и вы не понимаете. Может быть, попробовать сделать фон элементов красным и т. д., чтобы увидеть, что где.

person Martin    schedule 02.07.2014

Я думаю, что лучший способ — оптимизировать цепочку респондентов, посмотрите Доставка событий: цепочка ответчиков

Но если вы пытаетесь сделать что-то действительно необычное, вы всегда можете явно обрабатывать пользовательские прикосновения с помощью какого-либо специального представления. Если у вас есть координаты касания пользователя, используйте метод UICollectionView, чтобы получить индексный путь затронутой ячейки:

- (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point

Не забудьте преобразовать координаты в соответствующую систему координат с помощью метода UIView:

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
person voromax    schedule 04.07.2014