我遇到了一些困难,非常感谢一些帮助。
我有一个 NSslider,我用它来控制 QTMovie 的慢跑速度。
我希望根据滑块值播放视频的速率。这很容易做到。
问题是当用户的事件“mouseUp”完成时,我希望 NSSlider 重置为“0”。我似乎无法让这个事件起作用,所以我将 NSSlider 子类化并实现了 mousedown 和 mouseup 方法,并向 NSSlider 子类添加了一个委托并将其连接到我的应用程序的控制器。
它有点工作,但是滑块上有很大的延迟——它滑动得很好,但视频速率没有改变,只有当我“mouseUp”时才会改变——基本上似乎在 MouseUp 上调用了 mouseDown。
我希望其中一些有意义。
希望有大神能帮帮我
干杯,
亚当
enter code here
我的 NSSlider 子类 .m 文件:
@implementation TimeScrubberSlider
@synthesize delegate;
- (void)mouseDown:(NSEvent *)theEvent {
// dispatch_queue_t myQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
// dispatch_async(myQueue, ^{
NSLog(@"mouseDown");
[super mouseDown:theEvent];
if ([delegate respondsToSelector: @selector(doScrubTime:)])
{
[delegate doScrubTime:nil];
}
[super mouseDown:theEvent];
// );
// dispatch_release(myQueue);
}
- (void) mouseUp: (NSEvent*) theEvent
{
NSLog(@"mouseUp TimeScrubber");
[super mouseUp:theEvent];
[self setDoubleValue:0];
if ([delegate respondsToSelector: @selector(doScrubTime:)])
{
[delegate doScrubTime:nil];
}
[super mouseUp:theEvent];
}