NSViewRepresentable перекрывает полосу прокрутки, что делает невозможным щелчок

Когда NSViewRepresentable встроен в SwiftUI ScrollView И системная настройка «показывать полосу прокрутки» установлена ​​на «При прокрутке», невозможно перетащить или щелкнуть полосу прокрутки.

Я пытаюсь решить эту проблему некоторое время, но у меня заканчиваются идеи. Единственное, что сработало, - это использовать AppKit. NSScrollViewи встроить в него представления SwiftUI. Но это открывает новую банку червей.

  • Кто-нибудь видел это раньше?
  • Любые идеи, как это исправить? Мне кажется, что это ошибка. Но мне интересно, может ли кто-нибудь придумать действительный обходной путь?

Пожалуйста, проверьте мой минимальный пример: https://github.com/paxos/NSViewRepresentableScrollBug

1 ответ

Я тоже с этим сталкивался. Кажется, это ошибка.

Мой обходной путь — установить наложение с очень низкой (но не нулевой) непрозрачностью на NSViewRepresentable. По-видимому, это предотвращает попадание ввода мыши через полосы прокрутки, но все же позволяет ожидаемые взаимодействия, будучи визуально незаметным. Например:

      ScrollView {
    MyNSViewRepresentable()
        .overlay(Color.white.opacity(0.001))
}

Это не идеально - в моем случае у меня есть курсор перекрестия, установленный на базовом NSView. При использовании полос прокрутки он остается перекрестием вместо указателя, но, по крайней мере, он отлично их захватывает и перемещает.

Другие вопросы по тегам