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