Я работаю над своим первым приложением для Mac, и у меня возникли некоторые проблемы с получением моего NSView и его методов делегата для работы.У меня есть NSViewController, который должен реагировать на события мыши, то есть mouseDown.Это не сработало, вместо этого я создал собственный подкласс NSView, который выглядит следующим образом:
// Delegate method
@protocol CanvasViewDelegate
- (void)mouseDown:(NSEvent *)event;
@end
@interface CanvasView : NSView
{
id delegate;
}
@property (nonatomic, strong) id delegate;
@end
@implementation CanvasView
@synthesize delegate;
- (void)mouseDown:(NSEvent *)event
{
[delegate mouseDown:event];
}
Соответствующие части NSViewController, которые должны действовать как делегат NSView, выглядят так:
#import "CanvasView.h"
@interface PaintViewController : NSViewController <CanvasViewDelegate>
{
CanvasView *canvasView;
}
@property (strong) IBOutlet CanvasView *canvasView;
@end
@synthesize canvasView;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Initialization code here.
canvasView = [[CanvasView alloc] init];
canvasView.delegate = self;
}
return self;
}
- (void)mouseDown:(NSEvent *)event
{
NSLog(@"Down");
}
Теперь метод mouseDown не вызывается, что я делаю не так?