Я немного ударился о стену и был бы очень признателен за помощь.
У меня есть NSSlider, который я использую для управления скоростью бега QTMovie.
Я хочу, чтобы скорость воспроизведения видео соответствовала значению ползунка. Это легко сделать.
Проблема в том, что я хочу, чтобы NSSlider сбрасывался на «0», когда пользовательское событие «mouseUp» завершено. Кажется, я не могу заставить это событие работать, поэтому я создал подкласс NSSlider и реализовал методы mousedown и mouseup, а также добавил делегата в подкласс NSSlider и подключил его к контроллеру моего приложения.
Это как бы работает, но на ползунке есть огромная задержка - он скользит нормально, но скорость видео не меняется, и только когда я «mouseUp» - в основном кажется, что mouseDown вызывается на MouseUp.
Надеюсь, что-то из этого имеет смысл.
Надеюсь, кто-то там может помочь мне,
Ваше здоровье,
Адам
enter code here
мой файл .m подкласса 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];
}