首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSlider上的mouseDown事件

NSSlider上的mouseDown事件
EN

Stack Overflow用户
提问于 2011-07-17 21:30:08
回答 1查看 1.3K关注 0票数 0

我遇到了一点困难,真的很感谢你的帮助。

我有一个用来控制QTMovie慢跑速度的NSSlider。

我想要根据滑块值播放视频的速率。这很容易做到。

问题是,当用户的事件"mouseUp“完成时,我希望NSSlider重置为”0“。我似乎不能让这个事件工作,所以我实现了NSSlider的子类,实现了mousedown和mouseup方法,并向NSSlider子类添加了一个委托,并将其连接到我的应用程序的控制器。

它在某种程度上是有效的,但滑块上有一个巨大的延迟-它滑动得很好,但视频速率不会改变,而且只有当我' MouseUp‘的时候才会改变--基本上看起来mouseDown是在MouseUp上调用的。

我希望其中的一些是有意义的。

希望外面有人能帮我,

干杯,

亚当

代码语言:javascript
复制
enter code here

我的NSSlider子类.m文件:

代码语言:javascript
复制
@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];
 
}
EN

回答 1

Stack Overflow用户

发布于 2011-07-29 07:53:48

我想我现在可以正常工作了。

在我称为TimeScrubberSlider的NSSlider的子类中,下面的代码似乎就是我所需要的(希望有人会发现它很有用):

代码语言:javascript
复制
#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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6724110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档