需要帮助以了解如何获取NSScrollView中的点击位置

时间:2019-06-07 23:05:12

标签: swift click nsscrollview

我有一个自定义视图子类NSView,该子类将不同的图形对象绘制到其上下文中。该视图具有一种方法,该方法返回有关给定NSPoint是否落入这些对象中一个或多个对象范围内的信息。目的是能够单击这些对象之一来选择它。我重写了视图的mouseUp方法,并将event.locationInWindow传递给了我的getClickResult方法。

我正在使用游乐场的liveView功能在游乐场中测试所有代码。

当我创建视图并将其直接传递给playgroundPage.current.liveView时,一切都会按预期工作。

但是,当我创建自定义NSScrollView并将对原始视图的引用作为scrollView的documentView参数传递时,仅当我滚动到左下角并且滚动条位于显示结果被它们的宽度所取代。

因此,很明显,mouseUp事件的locationInWindow似乎确实绑定到了窗口,而不是绑定到它正在响应的视图。

我发现了这个问题:

Converting an NSPoint from window coordinates to view coordinates

这是前快速时代的开始。使用XCodes自动完成功能,我得到以下快速代码:

var clickPosition = convert(event.locationInWindow, to: customView)

似乎最接近objC答案中的转换代码,但是它不起作用。

所以我的两个问题是:

  1. 如何获得documentView中的点击位置?是否有预先配置的转换方法,或者我必须根据滚动位置手动计算偏移量?我可以从中读取此偏移量的scrollView's属性是什么?

  2. 在哪里可以替代mouseUp方法?在我的NSView子类中还是在我的NSScrollView子类中?

0 个答案:

没有答案