【发布时间】:2018-10-10 13:10:05
【问题描述】:
我正在尝试将 cocoa 事件连接到 minimal 目标-c++ cocoa 消息代理,该代理将调用我的 c++ 函数来处理事件。
对于一个按钮,OnClick,很简单,我去:
@interface cocoa_proxy : NSObject
- (void)action:(id)sender;
@end
@implementation cocoa_proxy
- (void)action:(id)sender
{
exit(0);
}
@end
cocoa_proxy* proxy = [[cocoa_proxy alloc] init];
[button setTarget:proxy];
[button setAction:@selector(action:)];
但是我不确定如何捕获按钮的其他事件(例如 OnPress、OnRelease、OnEnter、OnExit 等...),我似乎也无法捕获窗口或视图的事件。 任何尝试类似路线的尝试,使用格式略有不同的方法(来自网络上的各种、不完全相同但类似的问题)都会导致错误,例如:
reason: '-[NSWindow setTarget:]: unrecognized selector sent to instance xxxxx
我已经有一个想要重用的大型代码库,所以我有一个代理是至关重要的,而不仅仅是“在 Objective-C++ 中做所有事情”。
为了完整起见,这是我创建窗口的方式
window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(x, y, w, h)
styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]
autorelease];
需要明确的是,我不使用 XCode、Interface Builder、任何 GUI 创建软件或 Cocoa 感知软件,或使用诸如 NIB 之类的概念,一切都是按程序完成的,并且与 Objective-c++ 的交互最少。
所以我的问题是,我如何处理按钮的不同事件,以及如何以类似的方式处理 Windows 和视图的事件。
【问题讨论】:
标签: c++ cocoa objective-c++