2009-07-31 8 views
1

Ich schreibe eine benutzerdefinierte NSView-Unterklasse. Ich habe mehrere Instanzen dieser Klasse in meinem Fenster, von denen die meisten durch Aufruf der setFrameRotation-Methode von NSView gedreht werden. Ich muss auch den Mauszeiger über einen rechteckigen Bereich dieser Ansicht ändern.Warum sollte ich einen Cursor-Rect in einer gedrehten NSView-Unterklasse nicht verwenden?

documentation for NSView's addCursorRect Die Methode enthält folgende Schräg Warnung:

Cursor Rechtecke sind nicht Gegenstand von superviews zu clipping, noch sind sie mit gedrehten Ansichten zur bestimmungsgemäßen Verwendung.

Nun, schält. Aber ich würde sie gerne verwenden, da sie eine viel bessere Lösung als die hacks I'd otherwise have to use sind. Und weisst du was? Ich habe es versucht und es scheint gut zu funktionieren. Trotzdem macht mir diese Warnung Angst; Ich bin besorgt, dass der Teufel kommen wird, um seinen fälligen Betrag irgendwann auf der Straße abzuholen. Daher meine Frage ist: weiß jemand warum Cursor Rechtecke sind nicht für die Verwendung mit gedrehten Ansichten gedacht?

Antwort

1

Ja, es stellt sich heraus, dass direkt nach dem Posten meiner Frage die Antwort auf mich kommen würde. Es scheint, als ob die Treffererkennung, die von Cursor-Rekrutierungen verwendet wird, nur auf einfachen Rechtecken arbeitet; Wenn eine Ansicht mit einem Cursor-Rect gedreht wird, ist daher das tatsächliche verwendete Cursor-Rect das kleinste Rechteck, das das gedrehte Original-Rect vollständig umschließt.

Allerdings lasse ich das offen, falls es andere unerwünschte Nebenwirkungen gibt, die ich nicht sehe.

1

Obwohl ich dies selbst nicht versucht habe, sieht es so aus, als ob 10.5 einen neuen Weg hinzugefügt hätte, dies mit Tracking Area Objects zu tun, und es scheint nicht die Einschränkung zu haben, die alte Schulcursor-Rezepte haben.