我遇到了一点困难,真的很感谢你的帮助。
我有一个用来控制QTMovie慢跑速度的NSSlider。
我想要根据滑块值播放视频的速率。这很容易做到。
问题是,当用户的事件"mouseUp“完成时,我希望NSSlider重置为”0“。我似乎不能让这个事件工作,所以我实现了NSSlider的子类,实现了mousedown和mouseup方法,并向NSSlider子类添加了一个委托,并将其连接到我的应用程序的控制器。
它在某种程度上是有效的,但滑块上有一个巨大的延迟-它滑动得很好,但视频速率不会改变,而且只有当我' MouseUp‘的时候才会改变--基本上看起来mouseDown是在MouseUp上调用的。
我希望其中的一些是有意义的。
希望外面有人能帮我,
干杯,
亚当
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];
}发布于 2011-07-29 07:53:48
我想我现在可以正常工作了。
在我称为TimeScrubberSlider的NSSlider的子类中,下面的代码似乎就是我所需要的(希望有人会发现它很有用):
#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];
}
@endhttps://stackoverflow.com/questions/6724110
复制相似问题