Why can't I get the cursor to stay put for the duration of my mouse drag? As soon as I start dragging, it reverts to "Arrow" (even though I set it as open hand in the app delegate after launch).
- (void)mouseDown:(NSEvent *)event
{
[[NSCursor closedHandCursor] push];
}
- (void)mouseUp:(NSEvent *)event
{
[NSCursor pop];
}
If you don't want other views to change your cursor while dragging you can do in -mouseDown:
[[self window] disableCursorRects];
and in -mouseUp:
[[self window] enableCursorRects];
[[self window] resetCursorRects];
Try using the addCursorRect:cursor:
to set the cursor for you view.
Override the resetCursorRects
for your view:
- (void)resetCursorRects
{
[super resetCursorRects];
if(drag) {
[self addCursorRect:self.bounds cursor:[NSCursor closedHandCursor]];
}
}
You need to call invalidateCursorRectsForView:
to force update your cursor rects:
[self.window invalidateCursorRectsForView:self];
But if you want to have different cursor outside of you view you can call [[NSCursor closedHandCursor] set]
in your mouseDragged:
method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With