Sto scrivendo un'applicazione che utilizza OS X Lion e Snow Leopard. Sono d'accordo sul fatto che voglio rispondere agli eventi di scorrimento. La mia comprensione è che i colpi a tre dita chiameranno -[NSResponder swipeWithEvent:]
se tale metodo è implementato nella mia visualizzazione personalizzata. Ho già guardato this di domande e relative risposte, e ha cercato la seguente implementazione stub modificata del codice di Oscar Del Ben:- [NSResponder swipeWithEvent:] non chiamato
@implementation TestView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor redColor] set];
NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
}
- (void)swipeWithEvent:(NSEvent *)event {
NSLog(@"Swipe event detected!");
}
- (void)beginGestureWithEvent:(NSEvent *)event {
NSLog(@"Gesture detected!");
}
- (void)endGestureWithEvent:(NSEvent *)event {
NSLog(@"Gesture end detected!");
}
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"mouseDown event detected!");
}
@end
Questo compila e funziona bene, e la vista rende come previsto. L'evento mouseDown:
è registrato correttamente. Tuttavia, nessuno degli altri eventi viene attivato. Né i metodi begin/endGestureWithEvent:
né il metodo swipeWithEvent:
. Il che mi fa meravigliare: devo impostare un progetto/applicazione in qualche punto per ricevere e/o interpretare correttamente i gesti? Grazie in anticipo per l'aiuto.
Come nota a margine, è possibile ottenere lo scorrimento gesti da' - [NSResponder scrollwheel:] ', ma questo ho voluto usare per specificamente gesti a tre dita – nomothetis