Я врезался в стену и был бы очень признателен за помощь.
У меня есть NSSlider, который я использую для управления скоростью перемещения QTMovie.
Я хочу, чтобы скорость воспроизведения видео соответствовала значению слайдера. Это легко сделать.
Проблема в том, что я хочу, чтобы NSSlider сбрасывался до '0', когда событие пользователя "mouseUp" завершено.
Я не могу заставить это событие работать, поэтому я создал подкласс 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];
}