Scrolling in NSTableView deaktivieren

7

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.

    
erkanyildiz 27.09.2012, 16:48
quelle

5 Antworten

14

Das funktioniert für mich: Unterklasse NSScrollView, Setup und Override über:

%Vor%

Ich hoffe, das hilft.

    
titusmagnus 18.12.2012, 19:57
quelle
7

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.

    
proxpero 09.10.2014 20:09
quelle
2

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

    
jere 27.09.2012 17:18
quelle
1

Funktioniert für mich:

%Vor%     
Ivan Androsenko 16.08.2016 06:08
quelle
1

Hier ist meiner Meinung nach die beste Lösung:

Schnell 4

%Vor%

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:

  • ✅ Deaktiviert das Scrollen
    • ✅ Funktioniert programmgesteuert und verhält sich standardmäßig normal
  • ✅ Unterbricht den Bildlauf einer Elternansicht nicht
  • ✅ Integration des Schnittstellen-Builders
  • ✅ Drop-in Ersatz für NSScrollView
Ben Leggiero 22.02.2018 19:19
quelle