Убедитесь, что NSTrackingArea обновлен во вложенных NSScrollViews
У меня есть NSCollectionView в NSScrollView. Представление прокрутки прокручивается горизонтально, чтобы перемещаться вдоль линии элементов. Внутри каждого элемента коллекции находится NSOutlineView с вертикальной прокруткой.
У меня есть объекты NSButton для открытия и закрытия элементов коллекции - как дополнительные представления в моей коллекции. На этих кнопках я настроил NSTrackingAreas для поддержки эффектов наведения мыши.
Это работает правильно, пока я не прокручиваю, и в этот момент области NSTrackingArea явно остаются позади (эффекты наведения мыши происходят, когда мышь находится там, где была кнопка, а не там, где она есть).
Я перестраиваю свои области отслеживания в updateTrackingAreas в своем классе кнопок, и это называется, но не достаточно часто.
Я пытался использовать.inVisibleRect при настройке областей отслеживания, а не перестраивать их явно, но это не улучшает обновление отслеживания.
Я пытался вызвать updateTrackingAreas в NSCollectionView, когда происходит прокрутка, но он никогда не передается дочерним представлениям, как я ожидал.
В качестве примечания, в моей коллекции также есть NSTextViews с подсказками, которые также очень ненадежны. Их часто оставляют висеть. Указатели курсора руки над ссылками часто смещены.
Такое ощущение, что по умолчанию updateTrackingArea чрезмерно оптимизирован и вызывается не так часто, как следовало бы.
Итак, я собираюсь приступить к созданию собственного трекера области отслеживания для регистрации и обновления моих представлений, когда они не обновляются по умолчанию...
... но может кто-то увидит что-то очевидное, что мне не хватает? Спасибо.
1 ответ
Настройка области отслеживания может быть слегка нарушена при неправильном вложении видов прокрутки. См. Ответы о вложенности прокрутки здесь для деталей: