2011-02-26 3 views
0

J'ai une NSWindow que je mets en mode plein écran. Je voudrais pouvoir cacher la souris quand elle n'est pas utilisée (disons 15 secondes après sa dernière utilisation). J'ai mon délégué d'application comme suit:Comment appeler une méthode toutes les x secondes?

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 

Ce que je ne suis pas sûr est de savoir comment Remasquez le curseur après 15 secondes La chose est que je dois vérifier setLastMouseMove, chaque seconde ou plus, pas seulement appeler [NSCursor hide] après 15 secondes est écoulé.

Répondre

1

Essayez NSTimer. Vous pouvez spécifier qu'il soit répété au moment de la création.

Questions connexes