Objective c NSSlider上的mouseDown事件
我遇到了点麻烦,非常感谢你的帮助 我有一个NSSlider,我用它来控制一部电影的慢跑速度 我希望根据滑块值播放视频的速率。这很容易做到 问题是,当用户的事件“mouseUp”完成时,我希望NSSlider重置为“0”。 我似乎无法使此事件正常工作,因此我对NSSlider进行了子类化并实现了mousedown和mouseup方法,并向NSSlider子类添加了一个委托,并将其连接到我的应用程序的控制器 它有点工作,但是滑块上有一个巨大的延迟-它滑动很好,但是视频速率没有改变,只有当我“mouseUp”时才会改变-基本上看起来mouseDown是在mouseUp上调用的 我希望其中一些是有意义的 希望有人能帮我 干杯 亚当 我的NSSlider子类.m文件:Objective c NSSlider上的mouseDown事件,objective-c,delegates,nsslider,mousedown,mouseup,Objective C,Delegates,Nsslider,Mousedown,Mouseup,我遇到了点麻烦,非常感谢你的帮助 我有一个NSSlider,我用它来控制一部电影的慢跑速度 我希望根据滑块值播放视频的速率。这很容易做到 问题是,当用户的事件“mouseUp”完成时,我希望NSSlider重置为“0”。 我似乎无法使此事件正常工作,因此我对NSSlider进行了子类化并实现了mousedown和mouseup方法,并向NSSlider子类添加了一个委托,并将其连接到我的应用程序的控制器 它有点工作,但是滑块上有一个巨大的延迟-它滑动很好,但是视频速率没有改变,只有当我“mous
@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];
}
我想我现在可以用了 在我称为TimeScrubberSlider的NSSlider子类中,以下代码似乎正是我所需要的(希望有人会发现这很有用):
@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];
}
#import "TimeScrubberSlider.h"
#import "Controller.h"
@implementation TimeScrubberSlider
@synthesize delegate;
- (void)mouseDown:(NSEvent *)theEvent {
[delegate doScrubTime:nil];
[super mouseDown:theEvent];
[self mouseUp:theEvent];
}
- (void) mouseUp: (NSEvent*) theEvent
{
[self setIntValue:0];
[delegate doPlay:nil];
}
@end