我有一个NSWindowController,我正在添加相应的ViewControllers。我想在其中一个视图控制器中处理触摸事件。我的班级是
窗口.h
@interface WindowController : NSWindowController<NSToolbarDelegate>
@property (nonatomic, strong) NSViewController *currentViewController;
@property (assign) IBOutlet NSView *targetView;
@end
窗口.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");
}
我可以在这里打印鼠标关闭事件。现在我有一个视图控制器,它是
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");
}
我想在视图控制器中控制鼠标向下。我在这里错过了什么吗?
谢谢。
创建自定义 NSView,然后在其协议中委托 mouseDown 方法。在视图控制器中导入和使用自定义视图,并委派其方法。单击视图时,将触发鼠标按下事件。
不确定我的答案,但是如果您不在 Window.m 中调用 [super mouseDown:theEvent](顺便说一下,它应该被称为 WindowController.m),那么您正在破坏响应者链。因此,您的视图控制器看不到它。我说的对吗?