4 votes

Comment attraper 1 tap avec 3 doigts (NSEvent) sur une NSView personnalisée ?

J'ai le code suivant à attraper mouseDown sur mon site personnalisé NSView mais je pense que cela ne permet de connaître que le nombre de taps (en utilisant la fonction clickCount ), et non le nombre de doigts utilisés pour taper :

- (void)updateTrackingAreas{
    if(trackingArea != nil) {
        [self removeTrackingArea:trackingArea];
    }
    int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
    trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
                                                 options:opts
                                                   owner:self
                                                userInfo:nil];
    [self addTrackingArea:trackingArea];
}

- (void)mouseDown:(NSEvent *)theEvent{
    NSLog(@"%li",theEvent.clickCount);
    if ([theEvent clickCount] == 3){
        NSLog(@"3");
    }else{
        NSLog(@"normal");
    }
}

Des idées pour attraper 1 tap avec 3 doigts sur mon NSView personnalisé ? J'aimerais reproduire quelque chose comme l'option Finder.app, où l'on tape avec 3 doigts sur un fichier et un panneau QuickLook s'affiche.
Merci de votre attention !

0voto

Joel Points 44

Essayez de le faire dans la méthode mouseUp : (au lieu de mouseDown :). Par ailleurs, il n'est pas nécessaire de configurer une zone de suivi pour recevoir les événements mouseUp : ou mouseDown :.

-1voto

arun.s Points 961

Cliquez sur Événements

////////////////////

"Vous obtiendrez l'événement "click count" à partir de la méthode "[theEvent clickCount]", si vous cliquez assez vite dans NSView.

Essayez d'enregistrer le nombre de clics dans mouseDown

NSLog(@"%d",[theEvent clickCount]) ; & try clicking little faster".

///////////////////

Touch Events

//////////////////

Dans OS X >= 10.6, vous pouvez essayer de surcharger ces gestes d'événements tactiles

  • (void)touchesBeganWithEvent :(NSEvent *)event ;
  • (void)touchesMovedWithEvent :(NSEvent *)event ;
  • (void)touchesEndedWithEvent :(NSEvent *)event ;
  • (void)touchesCancelledWithEvent :(NSEvent *)event ;

&

ajouter

[self setAcceptsTouchEvents:YES] ; init

/////////////////

J'espère que cela vous aidera ! !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X