У меня есть NSWindow, которое я перевожу в полноэкранный режим. Я хотел бы иметь возможность скрыть мышь, когда она не используется (скажем, через 15 секунд после ее последнего использования). У меня есть мой делегат приложения следующим образом:
MyMediaRoomAppDelegate.h:
#import <Cocoa/Cocoa.h>
@interface MyMediaRoomAppDelegate : NSResponder <NSApplicationDelegate> {
NSWindow *window;
NSDate *lastMouseMove;
}
@property (assign) IBOutlet NSWindow *window;
@property (nonatomic, retain) NSDate *lastMouseMove;
@end
MyMediaRoomAppDelegate.m:
#import "MyMediaRoomAppDelegate.h"
@implementation MyMediaRoomAppDelegate
@synthesize window;
@synthesize lastMouseMove;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// The application has just finished lanching
// Grab the screen size
NSRect screenRect;
screenRect = [[NSScreen mainScreen] frame];
// Setup the window - full screen
[[self window] setLevel:NSMainMenuWindowLevel+1];
[[self window] setStyleMask:NSBorderlessWindowMask];
[[self window] setOpaque:YES];
[[self window] setBackgroundColor:[NSColor blackColor]];
[[self window] setFrame:screenRect display:YES animate:NO];
// Setup the mouse
[[self window] setAcceptsMouseMovedEvents:YES];
[[self window] makeFirstResponder:self];
[NSCursor hide];
}
- (BOOL)acceptsFirstResponder
{
return YES;
}
- (void)mouseMoved:(NSEvent *)theEvent
{
[NSCursor unhide];
[self setLastMouseMove: [NSDate date]];
}
@end
В чем я не уверен, так это в том, как повторно скрыть курсор через 15 секунд. Дело в том, что мне нужно проверять setLastMouseMove каждую секунду или около того, а не просто вызывать [NSCursor hide]
через 15 секунд.