hitTest 不会在 NSCell 子类中被调用

发布于 2024-10-15 01:48:59 字数 1311 浏览 5 评论 0原文

我正在为我的项目开发 NSCell 的子类。

在某些情况下,该子类在其视图上绘制了 NSButtonCell ,其中:

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

... 
    if (self.mode == PMVersatileCellButton) {
        [_button drawWithFrame:cellFrame inView:controlView];
inView:controlView];
    } else {

...

    }

    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

没有问题。关于绘图,问题是响应点击按钮!

我正在尝试使用以下方法执行此操作:

- (NSUInteger)hitTestForEvent:(NSEvent *)event inRect:(NSRect)frame ofView:(NSView *)controlView {

    NSLog(@"hitTest !");

    return [super hitTestForEvent:event inRect:frame ofView:controlView];

}

And :

+ (BOOL)prefersTrackingUntilMouseUp {
    return YES;
}

- (BOOL)startTrackingAt:(NSPoint) inView:(NSView *)

- (BOOL)trackMouse:(NSEvent *) inRect:(NSRect ) ofView:(NSView *) 直到MouseUp:(BOOL)

- (BOOL)continueTracking:(NSPoint) at:(NSPoint) inView:(NSView *)

- (void) stopTracking:(NSPoint) at:(NSPoint) inView:(NSView *) mouseIsUp:(BOOL)

但 hitTest 或任何其他永远不会被调用...

只有 + (BOOL)prefersTrackingUntilMouseUp 得到打电话,这对我没有多大帮助...

知道吗? ^^

I'm working on a subclass of NSCell for my project.

This subclass has, in some situation a NSButtonCell drawn on its view, with this :

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

... 
    if (self.mode == PMVersatileCellButton) {
        [_button drawWithFrame:cellFrame inView:controlView];
inView:controlView];
    } else {

...

    }

    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

No prob. about the drawing, the problem is respond to click on the button !

I'm trying to do this with :

- (NSUInteger)hitTestForEvent:(NSEvent *)event inRect:(NSRect)frame ofView:(NSView *)controlView {

    NSLog(@"hitTest !");

    return [super hitTestForEvent:event inRect:frame ofView:controlView];

}

And :

+ (BOOL)prefersTrackingUntilMouseUp {
    return YES;
}

- (BOOL)startTrackingAt:(NSPoint) inView:(NSView *)

- (BOOL)trackMouse:(NSEvent *) inRect:(NSRect) ofView:(NSView *) untilMouseUp:(BOOL)

- (BOOL)continueTracking:(NSPoint) at:(NSPoint) inView:(NSView *)

- (void)stopTracking:(NSPoint) at:(NSPoint) inView:(NSView *) mouseIsUp:(BOOL)

But hitTest or any others never get called...

Only + (BOOL)prefersTrackingUntilMouseUp get called, which doesn't help me so much...

Any idea ? ^^

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文