我创建了一个继承自 NSView 的自定义视图。我的目标是在用户单击自定义视图时通知与包含自定义视图的窗口相关联的 NSWindowControl。
我想使用 Action - Target 模式来实现这一点,就像 NSButton 一样。这样我就可以使用 Interface Builder 将自定义视图与窗口控制器中的操作连接起来。
我创建了一个继承自 NSView 的自定义视图。我的目标是在用户单击自定义视图时通知与包含自定义视图的窗口相关联的 NSWindowControl。
我想使用 Action - Target 模式来实现这一点,就像 NSButton 一样。这样我就可以使用 Interface Builder 将自定义视图与窗口控制器中的操作连接起来。
将以下内容添加到您的自定义视图头文件中:
@interface MyCustomView : NSView
@property (weak, nonatomic) id userClickedTarget;
@property (assign, nonatomic) SEL userClickedAction;
@end
在自定义视图实现文件中合成 getter/setter(这对于最新版本的 Xcode/clang 实际上是可选的):
@synthesize userClickedTarget = _userClickedTarget;
@synthesize userClickedAction = _userClickedAction;
并在您的代码中调用目标/操作:
if (_userClickedTarget && _userClickedAction) {
[_userClickedTarget performSelector:_userClickedAction
withObject:self
afterDelay:0.0];
}
请注意,使用将调用与视图代码performSelector:withObject:afterDelay
分离,并使其在下次处理 runloop 时运行。