问题标签 [nstrackingarea]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
514 浏览

macos - NSTrackingArea 调用自定义代码

NSTrackingArea 定义的区域捕获鼠标事件时如何调用自己的方法?我可以在下面的 NSTrackingArea init 中指定我自己的方法(例如“myMethod”)吗?

谢谢!

0 投票
1 回答
409 浏览

objective-c - 目标-C | NSBezierPath 在动作上绘制和着色

我有一个带有跟踪区域的自定义视图类。我想要的是,当鼠标进入跟踪区域时,用颜色绘制贝塞尔曲线,当鼠标退出该区域时,贝塞尔曲线消失。为了让它消失,我读到唯一的方法是用窗口背景颜色改变它的颜色。

我设法添加了跟踪区域,但我不知道如何绘制贝塞尔曲线。如果我把代码放进去

它是在应用程序启动时绘制的,但我不希望这样。我试过这个:

但是没有绘制贝塞尔曲线。

谢谢你的帮助!

编辑 @uchuugaka

这是到目前为止的代码,它似乎没有做任何事情:

我确定我做错了什么。

编辑 2

我只需要设置颜色drawRect:。所以:

0 投票
1 回答
885 浏览

swift - 从 NSEvent userData 读取字典

我创建了一个NSTrackingArea并且我在userInfo参数中传递了一个字典。

这里成功接收到这个事件;

如何从 userData 中读取部分等的值?

0 投票
1 回答
890 浏览

swift - 无法启动 NSTrackingArea

我有一个NSOutlineView我想在mouseEntered:拖放mouseExited:过程中更新的内容。所以我试图添加一个NSTrackingArea。在我的大纲视图子类中,我有:

但我似乎得到了运行时异常:

这一定是非常明显的事情,但所有谷歌结果似乎都没有表明我做错了什么。如果我做:

然后鼠标方法会触发,但显然只有在释放鼠标按钮时才会触发。

0 投票
1 回答
742 浏览

swift3 - 移动鼠标时未调用 mouseMoved 函数?

我正在尝试在 SKScene 中查找鼠标坐标,但是没有调用 moveMouse 函数。 (顺便说一句,这是在 Swift Playground 中)我什至编写了一个打印函数来测试该函数是否被调用,但它绝对没有打印任何内容。

这就是我设置 NSTrackingArea 的方式:

这是 mouseMoved 函数(未被调用的函数)

没有调用 mouseMoved 是否有原因?

0 投票
1 回答
429 浏览

swift - Swift NSTextField 文本消失

这个问题可能存在于 Objective-c 中一个 6 岁的帖子中。我没有找到最近的答案或问题,或者用 Swift 编写的。

我正在使用情节提要,并且已将NSTextField. 出于某种原因,当我单击该字段时,会显示占位符,当我输入文本并单击退出时,文本会消失。文本实际上在那里,因为当我重新点击时,输入的文本仍然存在。图层覆盖文本值似乎是某种类型的渲染问题?很奇怪。我正在使用NSTrackingArea并添加CALayer.

这是发生的情况的屏幕截图: 在此处输入图像描述

这是我的代码:

0 投票
1 回答
18 浏览

swift3 - 将相邻跟踪区域视为一个连续区域

当鼠标离开窗口的标题或内容视图时,我试图呈现一个标题/更少窗口的 UI,但在从一个窗口移动到另一个时却没有;本质上将两个跟踪区域作为一个功能(我使用了这个,因为我无法弄清楚如何在隐藏标题视图时创建单个区域):

此外,关闭按钮上有一个跟踪矩形,仅在结束时才会出现。无论如何,从我的跟踪器输出中,我看到了问题 - 将鼠标悬停在窗口上,从下方到其标题:

请注意为什么我会收到第二个视图输入事件(视图输入),但是从视图中移出并移到相邻标题上的每个都会触发一个 updateTilebar() 调用,这在视觉上是断断续续的 - 到目前为止还没有通过动画进行补救:

所以我的问题是当区域相邻时如何推迟行动。

它们(标题栏和内容视图)不是彼此的兄弟,所以不认为 hitTest() 是可行的,但基本上如果我能判断我是否正在移动到相邻的跟踪区域,我希望它是一个不 -同上。

任何关于动画为什么不起作用的帮助都会是一个加分项。

0 投票
1 回答
303 浏览

macos - 确保在嵌套的 NSScrollViews 中刷新 NSTrackingArea

我在 NSScrollView 中有一个 NSCollectionView。滚动视图水平滚动以沿项目行移动。每个集合项内部都有一个垂直滚动的 NSOutlineView。

我有用于打开和关闭集合项目的 NSButton 对象 - 作为我集合中的补充视图。我在这些按钮上设置了 NSTrackingAreas 以支持鼠标悬停效果。

这可以正常工作,直到我滚动,此时 NSTrackingArea 区域明显落后(当鼠标位于按钮所在的位置时,鼠标悬停效果发生,而不是它所在的位置)。

我在按钮类的 updateTrackingAreas 中重建了我的跟踪区域,这被调用了,但不够频繁。

我在设置跟踪区域时尝试使用 .inVisibleRect,而不是显式重建它们,但这并不能改善跟踪更新。

当滚动发生时,我尝试在 NSCollectionView 上调用 updateTrackingAreas,但它从未像我预期的那样传递给子视图。

附带说明一下,我的集合视图项目中也有 NSTextViews,它们的工具提示也非常脆弱。他们经常被挂着。指向链接上的手形光标经常错位。

感觉好像默认的 updateTrackingArea 被过度优化了,并且没有像它应该的那样经常被调用。

因此,我将着手构建自己的跟踪区域跟踪器,以在默认情况下未更新视图时注册和更新我的视图...

...但也许有人可以看到我遗漏的明显东西?谢谢你。

0 投票
0 回答
189 浏览

swift - mouseMoved 在 NSTrackingArea 之外触发

NSTrackingArea我正在为我的特定部分设置一个NSTextView,以便mouseMoved仅在此矩形内触发 etc 方法。这是我的代码:

然而,mouseMoved等。为整个视图而被解雇。

所以我的问题是:当鼠标在跟踪区域之外时,为什么会触发 mouseMoved ?上面的代码有错误吗?

编辑:

显然,在某个地方,为整个视图添加了一个 trackingArea,正如我在调试面板中看到的那样:

删除super.updateTrackingAreas()并不会改变这一点,因此正在发生其他事情。我可以使用 删除它trackingAreas.forEach { if $0.rect == self.bounds { removeTrackingArea($0)} },但它似乎在mouseMoved:被触发时添加回来(见评论)。

0 投票
1 回答
172 浏览

swift - NSTrackingArea 并不总是更新游标

我很难使用NSTrackingArea更新光标来显示我的自定义可拖动对象的NSView大小。这是一个例子:

NSRect用于手柄:

追踪区域:

最后,游标更新:

光标在进入或离开蓝色框时应该会发生变化,但只有 50-75% 的时间会发生这种情况。这是一个光标在进入时不改变但在离开时改变的示例。

https://i.imgur.com/fbqqzGy.mp4