Gibt es eine einfache Möglichkeit, das Scrollen eines NSTableView zu deaktivieren.
Es scheint, dass keine Eigenschaft vorhanden ist
[myTableView enclosingScrollView]
oder [[myTableView enclosingScrollView] contentView]
, um es zu deaktivieren.
Das funktioniert für mich: Unterklasse NSScrollView, Setup und Override über:
%Vor%Ich hoffe, das hilft.
Danke an @titsmagnus für die Antwort, aber ich habe eine Änderung vorgenommen, um das Scrollen nicht zu unterbrechen, wenn die "deaktivierte" scrollView in einer anderen scrollView verschachtelt ist: Sie können die äußere scrollView nicht scrollen, während sich der Cursor innerhalb der Grenzen befindet der inneren scrollView. Wenn Sie das tun ...
%Vor%... dann wird das scroll-Ereignis durch die "disabled" scrollView an die äußere scrollView übergeben und sein Scrollen wird nicht in seinen Subviews stecken bleiben.
Es gibt keinen einfachen direkten Weg (das heißt, es gibt keine Eigenschaft wie UITableView scrollEnabled
, die Sie festlegen können), aber ich fand diese Antwort hilfreich in der Vergangenheit.
Eine andere Sache, die Sie ausprobieren könnten (ich bin mir nicht sicher), ist, subclassing NSTableView
und überschreiben -scrollWheel
und -swipeWithEvent
, so dass sie nichts tun. Hoffe das hilft
Hier ist meiner Meinung nach die beste Lösung:
Ersetze einfach NSScrollView
durch DisablableScrollView
(oder BCLDisablableScrollView
wenn du noch ObjC benutzt) und du bist fertig. Setzen Sie einfach isEnabled
im Code oder in IB und es wird wie erwartet funktionieren.
Der Hauptvorteil, den dies hat, ist für verschachtelte Scroll-Ansichten; Wenn Sie Kinder deaktivieren, ohne das Ereignis an den nächsten Responder zu senden, werden auch die Eltern deaktiviert, während der Cursor über dem deaktivierten Kind steht.
Hier sind alle Vorteile dieses Ansatzes aufgelistet:
NSScrollView
Tags und Links objective-c scroll macos nstableview nsscrollview