Frage

Ich habe eine NSTextView mit einer beträchtlichen Menge an Text. Jedes Mal, wenn ich jedoch bewegen, wird die Ansicht nicht korrekt aktualisiert. Es gibt einige Artefakte, die am oberen oder unteren Rand der Ansicht bleiben. Es scheint, dass die Ansicht nicht aktualisiert sich oft genug. Wenn ich nur sehr langsam die Ansicht blättern aktualisiert obwohl korrekt. Wenn ich eine Grenze zu der Ansicht, alles perfekt funktioniert hinzufügen, randlos Ansicht ist derjenige, der ein Problem hat. Hier ist ein Link zu einem Screenshot:

Danke

War es hilfreich?

Lösung

Haben Sie den setDrawsBackground und copiesOnScroll propertes entweder für die NSScrollView oder NSClipView?

Das erste, was ich vorschlagen würde, ist die „zieht Hintergrund“ Eigenschaft der NSScrollView Ausschalten:

[myScrollView setDrawsBackground:NO];

Beachten Sie, dass dies auf dem NSScrollView eingestellt wird, und nicht auf dem eingebetteten NSClipView.

Der folgende Auszug aus dem Dokumentation relevant sein können:

  

Wenn Ihr NSScrollView eine NSClipView umschließt eine setDrawsBackground: Nachricht mit einem Parameter von NO zum NSScrollView Senden hat den zusätzlichen Effekt, die NSClipView eine setCopiesOnScroll: Nachricht mit einem Parameter von NO senden. Der Nebeneffekt der setDrawsBackground: Nachricht direkt an die NSClipView sendet stattdessen das Auftreten von „Pfade“ (Spuren der vorherigen Zeichnung) wäre in der Dokumentenansicht, wie sie gescrollt wird.

Andere Tipps

Sieht aus wie das Textfeld nicht einmal in dem Scroll-Bereich ist ... Sind Sie sicher, dass etwas nicht wahr überlappende?

Ich hatte ein ähnliches Problem - Artefakte entwickeln, wenn die NSTextView in einem anderen Scroll eingebettet ist

(dh eine NSTableView.).

I tatsächlich eingeschaltet die setdrawsbackground und fügte dann eine schöne Farbe, um es wieder verschwinden.

-(void)awakeFromNib{
    NSScrollView *scroll = [self enclosingScrollView];
    [scroll setBorderType:NSNoBorder];
    [scroll setDrawsBackground:YES];
    [scroll setBackgroundColor:[NSColor windowBackgroundColor]];
}

Dies in Kombination mit einem Scroll-Rad-Ereignisse lassen Sie mich die NSTextView in einem NSTableView verwenden.

-(void)scrollWheel:(NSEvent *)theEvent{
    NSScrollView *scroll = [self enclosingScrollView];
   [[scroll superview] scrollWheel:theEvent];
}

Ich hatte das gleiche Problem vor einiger Zeit. Ich erinnere mich nicht, wie ich es gelöst.

Versuchen Sie, die NSTextView zu einer anderen Ansicht zu sperren, wenn die Superview eine benutzerdefinierte Ansicht ist. Nur um zu sehen, was passieren wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top