NSViewRepresentable перекрывает полосу прокрутки, что делает невозможным щелчок
Когда
NSViewRepresentable
встроен в SwiftUI
ScrollView
И системная настройка «показывать полосу прокрутки» установлена на «При прокрутке», невозможно перетащить или щелкнуть полосу прокрутки.
Я пытаюсь решить эту проблему некоторое время, но у меня заканчиваются идеи. Единственное, что сработало, - это использовать AppKit.
NSScrollView
и встроить в него представления SwiftUI. Но это открывает новую банку червей.
- Кто-нибудь видел это раньше?
- Любые идеи, как это исправить? Мне кажется, что это ошибка. Но мне интересно, может ли кто-нибудь придумать действительный обходной путь?
Пожалуйста, проверьте мой минимальный пример: https://github.com/paxos/NSViewRepresentableScrollBug
1 ответ
Я тоже с этим сталкивался. Кажется, это ошибка.
Мой обходной путь — установить наложение с очень низкой (но не нулевой) непрозрачностью на NSViewRepresentable. По-видимому, это предотвращает попадание ввода мыши через полосы прокрутки, но все же позволяет ожидаемые взаимодействия, будучи визуально незаметным. Например:
ScrollView {
MyNSViewRepresentable()
.overlay(Color.white.opacity(0.001))
}
Это не идеально - в моем случае у меня есть курсор перекрестия, установленный на базовом NSView. При использовании полос прокрутки он остается перекрестием вместо указателя, но, по крайней мере, он отлично их захватывает и перемещает.