我正在继承NSButton,因为我需要在按住鼠标时重复选择器。
我这样做:
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
[self setBezelStyle:NSBezelBorder];
PotRightIsDown = NO;
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
// Drawing code here.
}
- (void)mouseDown:(NSEvent *)theEvent;
{
NSLog(@"pot right mouse down");
PotRightIsDown = YES;
holdDownTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(sendCommand) userInfo:nil repeats:YES];
}
- (void)mouseUp:(NSEvent *)theEvent;
{
NSLog(@"pot right mouse up");
PotRightIsDown = NO;
}
-(void)sendCommand
{
if (PotRightIsDown)
{
NSLog(@"run the stuff here");
}
else
{
[holdDownTimer invalidate];
}
}
像冠军一样工作,每100毫秒发送一次命令。
在IB的窗口中,我将一个斜角按钮拖到窗口上,并将它的类设置为该子类。当我运行应用程序时,该按钮是不可见的,但它可以工作。我猜这是因为我在子类中有一个空的drawRect函数。
如何使此子类按钮看起来像斜角按钮?
谢谢你,
有状态
答案 0 :(得分:3)
如果您没有向特定的子类方法添加任何功能,那么您可以完全避免实现它,这将允许超类提供默认行为。
或者(正如我的@Carl Norum指出的那样)你可以使用以下方式明确地做到这一点:
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
}
但这有点无意义。