Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Cocoa NSOpenGLView-[win setDelegate:view]显示错误。如何手动委派?_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c Cocoa NSOpenGLView-[win setDelegate:view]显示错误。如何手动委派?

Objective c Cocoa NSOpenGLView-[win setDelegate:view]显示错误。如何手动委派?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我正在约塞米蒂10.10上用Eclipse(不是Xcode)编程。。。 我试图捕捉MouseMoved事件,但它没有被调用(mouseDown,mouseDragged-工作正常)。所以我在这里使用这个示例代码 但是编译器在 [应用程序集委派:查看]; (-无法用“NSView*”类型的左值初始化“id”类型的参数) 如果我评论这句话-这是工作,但mouseMoved不会打电话。 请帮忙!我是objective-c的新手,OSX不会自动跟踪鼠标移动事件,除非您提出请求 为了接收mouseMove

我正在约塞米蒂10.10上用Eclipse(不是Xcode)编程。。。 我试图捕捉MouseMoved事件,但它没有被调用(mouseDown,mouseDragged-工作正常)。所以我在这里使用这个示例代码 但是编译器在
[应用程序集委派:查看]; (-无法用“NSView*”类型的左值初始化“id”类型的参数)
如果我评论这句话-这是工作,但mouseMoved不会打电话。

请帮忙!我是objective-c的新手,OSX不会自动跟踪鼠标移动事件,除非您提出请求

为了接收
mouseMoved:
事件,您应该向
NSOpenGLView
的子类添加
NSTrackingArea
。例如:

- (void)awakeFromNib {
    NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.frame options:NSTrackingActiveAlways|NSTrackingMouseMoved owner:self userInfo:nil];
    [self addTrackingArea:trackingArea];
}
之后,将调用
mouseMoved:
方法

- (void)mouseMoved:(NSEvent *)theEvent {
    NSLog(@"moved");
}

如果需要在视图调整大小时手动更新跟踪区域,可以选择实施
updateTrackingAreas
。有关详细信息,请参阅。

非常感谢!。。awakeFromNib没有调用mee,但是我把这个代码放到了viewDidMoveToWindow,现在工作正常了<但是keyDown事件仍然不起作用。
我补充道:
[win setInitialFirstResponder:view]
[win setNextResponder:视图]
[win makeFirstResponder:view]
-(BOOL)acceptsFirstResponder{return YES;//从未调用过}
并且没有任何效果。。。也许我必须创建NSController对象子类?(在这种情况下,我如何将此子类连接到NSView对象?
keyDown:
在按键盘键时在第一响应程序上调用。因此,请确保您的
keyDown:
方法在正确的位置实现。通常情况下,您不需要操纵第一响应者,因为系统将根据用户交互自动设置它。下面是我的代码:可能它不工作,因为view没有委托win?