benutzerdefinierte NSSliderCell

7

Ich habe eine spezielle Schiebereglerzelle implementiert, die Bilder für die Bildlaufleiste und den Drehknopf überzeichnen kann. Das einzige Hindernis, das jetzt im Weg ist, ist das: Wenn ich den Knopf schnell ziehe, werden die Bilder durcheinander gebracht. Ich habe einen Screenshot gepostet.

Hier ist der Code:

%Vor%

ah ich bin so nah. jede Hilfe bezüglich, warum dies geschieht und wie man es löst, wird sehr geschätzt, danke!

    
han 21.10.2010, 09:02
quelle

4 Antworten

13

Ok, also ist es herausgefunden. Offensichtlich hat der Slider versucht, schlau zu sein und nur dort zu zeichnen, wo der Knopf war. also muss ich die rect die ganze Zeit durch das Überschreiben von setNeedsDisplayInRect in der Slider-Klasse ungültig machen.

%Vor%     
han 11.11.2010, 08:56
quelle
4

Ich bin ein Anfänger in Objective-c. Ich bin auch auf dieses Problem gestoßen! Hier ist die Lösung zu finden, dass ich zwei Tage verbrachte))) Speichern und Wiederherstellen von GraphicsState:

%Vor%

Sorry für schlechtes Englisch.

    
NSLeader 01.08.2012 10:08
quelle
2

Entfernen Sie alle Nachrichten -lockFocus und -unlockFocus . Das Framework kümmert sich darum, den Zeichnungskontext für Sie einzurichten, bevor -drawBarInside:flipped: oder -drawKnob: gesendet werden.

Außerdem sollten Sie keine Objekte innerhalb einer Zeichenmethode erstellen.

    
NSResponder 21.10.2010 10:40
quelle
1

Ha, es ist eine andere Geschichte. Nein, NSResponder hat Recht und Sie sollten alle "lockFocus" -Stücke entfernen. Dieses Problem ist jedoch auf den Standard-Schieberegler zurückzuführen, der von der NSSliderCell irgendwo außerhalb von drawBarInside gezogen wurde: gewendet: umgedreht. Ich habe dieses Problem auch vor nicht allzu langer Zeit gesehen.

Hier ist Diskussion und Lösung: Ссылка , in Kurz, Sie können ganze drawCell überschreiben: inView: oder verwenden Sie einen "Dirty Hack Trick" mit dem Überschreiben einer privaten Methode. Ich persönlich mag keine Hacks, aber in diesem Fall habe ich

%Vor%

Und es hat das Problem für mich gelöst

    
Gobra 21.10.2010 14:35
quelle

Tags und Links