NSViewController mouseDown: не вызывается
У меня есть NSWindowController, где я добавляю свои соответствующие ViewController. Я хотел бы обрабатывать сенсорные события в одном из ViewController. Мой класс
window.h
@interface WindowController : NSWindowController<NSToolbarDelegate>
@property (nonatomic, strong) NSViewController *currentViewController;
@property (assign) IBOutlet NSView *targetView;
@end
Window.m
-(void)addViewController
{
NSViewController *currentController = [[currentControllerClass alloc]initWithNibName:controllerIdentifier bundle:nil];
self.currentViewController = currentController;
[self.targetView addSubview:self.currentViewController.view];
[self.currentViewController.view setFrame: [self.targetView bounds]];
}
-(void) awakeFromNib{
[super awakeFromNib];
[self.window setIgnoresMouseEvents:NO];
[self setToolbarToPracticeView];
}
-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"Window > Mouse down");
}
Я могу напечатать событие mousedown здесь. Теперь у меня есть viewController, который
ViewController.h
@interface ViewController : NSViewController
@end
ViewController.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Initialization code here.
}
return self;
}
-(void)awakeFromNib
{
[self.view setAcceptsTouchEvents:YES];
}
-(BOOL)acceptsFirstResponder
{
return YES;
}
-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"ViewController > mouse down");
}
Я хотел бы получить контроль над mouseDown в ViewController. Я что-то здесь упускаю?
Благодарю.
2 ответа
Создайте Custom NSView, а затем делегируйте метод mouseDown в своем протоколе. Импортируйте и используйте customView в ViewController и делегируйте его методы. При щелчке по представлению срабатывает событие mouseDown.
Не уверен в моем ответе, но если вы не вызовете [super mouseDown:theEvent] в Window.m (который, кстати, должен называться WindowController.m), вы нарушаете цепочку респондента. Следовательно, ваш контроллер представления не может его видеть. Я прав?