Je veux détecter des gestes de défilement (deux doigts sur Trackpad). Comment devrais-je faire ça? P>
3 Réponses :
On dirait que vous souhaitez remplacer la verche code: p > View de votre vue: code> méthode. Vous pouvez utiliser le
NSEvent code> 's
deltax code> et
Deltay code> pour obtenir combien l'utilisateur a défilé par.
@implementation MyView
- (void)scrollWheel:(NSEvent *)theEvent {
NSLog(@"user scrolled %f horizontally and %f vertically", [theEvent deltaX], [theEvent deltaY]);
}
@end
Notez que la documentation d'Apple recommande d'utiliser ScrollingDeltax CODE> et
ScrollingDeltay CODE> pour accéder aux valeurs NSScrollHeel (OX 10.7 et ultérieur).
Vous devez le faire en mettant en œuvre des méthodes d'événement tactile de Nsview code> dans votre sous-classe personnalisée.
Ces méthodes sont les suivantes:
[self setAcceptsTouchEvents:YES];
Merci, je cherchais ça.
Apple recommande explicitement contre cette solution. Voir «Événements de souris et le trackpad» dans Développeur .apple.com / Bibliothèque / Mac / Documentation / Cocoa / Conceptu Al / ...
Ces méthodes conviennent mieux à la détection de deux gestes de glissière à doigts. Utilisez le volant à défiler à la place.
Pour détecter l'événement de la roue de défilement, utilisez - (VOID) Scrollhefheel: (NSEvent *) La méthodeEvent.
- (void)scrollWheel:(NSEvent *)theEvent { if([theEvent phase]) { // theEvent is generated by trackpad } else { // theEvent is generated by mouse } }
Report - [Link] ( Stackoverflow.com/questions/13807616/... ). Désolé, j'ai déjà donné le mauvais lien.
Incorrect. Lors du défilement avec la souris magique Apple, la phase peut être> 0.
J'ai essayé votre réponse sur OSX 10.10 et la mendicitéWithevent: et de l'endguewithevent: sont pas i> appelé lors du défilement. Selon la documentation, ces deux méthodes ne sont activées que pour les événements tactiles et les gestes.
Ceci Documentation devrait aider
déjà vérifié. N'a pas aidé