Убедитесь, что NSTrackingArea обновлен во вложенных NSScrollViews - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть NSCollectionView в NSScrollView.Представление прокрутки прокручивается горизонтально, чтобы перемещаться вдоль линии элементов.Внутри каждого элемента коллекции находится NSOutlineView с вертикальной прокруткой.

У меня есть объекты NSButton для открытия и закрытия элементов коллекции - как дополнительные представления в моей коллекции.Я настроил NSTrackingAreas на этих кнопках для поддержки эффектов наведения мыши.

Это работает правильно, пока я не прокручиваю, и в этот момент области NSTrackingArea явно остаются позади (эффекты наведения мыши возникают, когда мышь находится там, где кнопкабыл, а не там, где он есть).

Я перестраиваю свои области отслеживания в updateTrackingAreas в своем классе кнопок, и это вызывается, но не часто.

Я пытался использовать .inVisibleRect при настройкемои области отслеживания, вместо того, чтобы явно перестраивать их, но это не улучшает обновление отслеживания.

Я пытался вызвать updateTrackingAreas для NSCollectionView, когда происходит прокрутка, но он никогда не передается дочерним представлениям какЯ ожидал, что так и будет.

В качестве примечания, у меня также есть NSTextViews в элементах представления моей коллекции с подсказками, которые тоже очень хлопка.Их часто оставляют висеть.При наведении курсора на ссылки часто происходит неправильное выравнивание.

Такое ощущение, что по умолчанию updateTrackingArea чрезмерно оптимизирован и вызывается не так часто, как следовало бы.

Итак, я собираюсь приступить к созданию собственного трекера области слежения для регистрации и обновления моих представлений, когда они не обновляются по умолчанию ...

... но, возможно, кто-томожно увидеть что-то очевидное, чего мне не хватает?Спасибо.

1 Ответ

0 голосов
/ 19 декабря 2018

Настройка области отслеживания может быть слегка нарушена при неправильном вложении видов прокрутки.Для получения дополнительной информации см. Ответы о вложенных представлениях прокрутки здесь:

NSScrollView внутри другого NSScrollView

...