【发布时间】:2023-03-21 20:49:02
【问题描述】:
我的应用程序有一个显示事件时间线的自定义视图。此视图包含在 NSScrollView 中,以支持时间线的水平滚动。使用通知,我实现了一种机制,该机制应该显示另一个自定义视图,当用户在时间轴中单击该事件时,该视图会显示有关该事件的详细信息。以下是时间线收到事件时处理事件的代码:
NSEvent *anEvent = [aNotification object];
NSPoint aLocationInSelf = [self convertPoint: [anEvent locationInWindow] toView: self];
// Create callout view and display
NSRect aRect = NSMakeRect(aLocationInSelf.x, aLocationInSelf.y, 300, 200);
TimelineCallout *aCallout = [[TimelineCallout alloc] initWithFrame: aRect];
[self addSubview: aCallout];
在上面的代码中,我将事件注册的鼠标点击点从窗口坐标转换为视图(时间线)坐标。
但是,当我使用调试器单步执行此操作时,没有进行任何转换,locationInSelf 显示的坐标与我从[anEvent locationInWindow] 得到的点相同。结果,标注被绘制在错误的位置或根本不可见。
我一定是做错了什么,但我不知道是什么……
【问题讨论】:
-
您可以查看我的最新答案。 stackoverflow.com/questions/5160094/…