1st: NSView Subclass
Создайте подкласс NSView
и определите, что вам произойдет в переопределениях MouseEntered
/ MouseExited
.В этом случае нажатие и извлечение NSCursor.ClosedHandCursor
из стека курсоров.
public partial class MyCustomImageView : NSImageView
{
[Export("initWithCoder:")]
public MyCustomImageView(NSCoder coder) : base(coder) { }
public MyCustomImageView (IntPtr handle) : base (handle) { }
NSCursor cursor;
[Export("mouseEntered:")]
public override void MouseEntered(NSEvent theEvent)
{
cursor = NSCursor.ClosedHandCursor;
cursor.Push();
base.MouseEntered(theEvent);
}
[Export("mouseExisted:")]
public override void MouseExited(NSEvent theEvent)
{
base.MouseExited(theEvent);
cursor?.Pop();
}
}
2nd: NSTrackingArea
Теперь вы можете определить NSTrackingArea
, который будет активировать обработчики, введенные и выведенные мышью,Предполагая, что MyImageView
является экземпляром / выходом вашего подкласса NSView, а затем добавьте эту область отслеживания в представление (AddTrackingArea()
).
var ta = new NSTrackingArea(MyImageView.Bounds, NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.MouseEnteredAndExited, MyImageView, null);
MyImageView.AddTrackingArea(ta);