问题标签 [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.
macos - NSTrackingArea 调用自定义代码
NSTrackingArea 定义的区域捕获鼠标事件时如何调用自己的方法?我可以在下面的 NSTrackingArea init 中指定我自己的方法(例如“myMethod”)吗?
谢谢!
objective-c - 目标-C | NSBezierPath 在动作上绘制和着色
我有一个带有跟踪区域的自定义视图类。我想要的是,当鼠标进入跟踪区域时,用颜色绘制贝塞尔曲线,当鼠标退出该区域时,贝塞尔曲线消失。为了让它消失,我读到唯一的方法是用窗口背景颜色改变它的颜色。
我设法添加了跟踪区域,但我不知道如何绘制贝塞尔曲线。如果我把代码放进去
它是在应用程序启动时绘制的,但我不希望这样。我试过这个:
但是没有绘制贝塞尔曲线。
谢谢你的帮助!
编辑 @uchuugaka
这是到目前为止的代码,它似乎没有做任何事情:
我确定我做错了什么。
编辑 2
我只需要设置颜色drawRect:
。所以:
swift - 从 NSEvent userData 读取字典
我创建了一个NSTrackingArea
并且我在userInfo
参数中传递了一个字典。
这里成功接收到这个事件;
如何从 userData 中读取部分等的值?
swift - 无法启动 NSTrackingArea
我有一个NSOutlineView
我想在mouseEntered:
拖放mouseExited:
过程中更新的内容。所以我试图添加一个NSTrackingArea
。在我的大纲视图子类中,我有:
但我似乎得到了运行时异常:
这一定是非常明显的事情,但所有谷歌结果似乎都没有表明我做错了什么。如果我做:
然后鼠标方法会触发,但显然只有在释放鼠标按钮时才会触发。
swift3 - 移动鼠标时未调用 mouseMoved 函数?
我正在尝试在 SKScene 中查找鼠标坐标,但是没有调用 moveMouse 函数。 (顺便说一句,这是在 Swift Playground 中)我什至编写了一个打印函数来测试该函数是否被调用,但它绝对没有打印任何内容。
这就是我设置 NSTrackingArea 的方式:
这是 mouseMoved 函数(未被调用的函数)
没有调用 mouseMoved 是否有原因?
swift3 - 将相邻跟踪区域视为一个连续区域
当鼠标离开窗口的标题或内容视图时,我试图呈现一个标题/更少窗口的 UI,但在从一个窗口移动到另一个时却没有;本质上将两个跟踪区域作为一个功能(我使用了这个,因为我无法弄清楚如何在隐藏标题视图时创建单个区域):
此外,关闭按钮上有一个跟踪矩形,仅在结束时才会出现。无论如何,从我的跟踪器输出中,我看到了问题 - 将鼠标悬停在窗口上,从下方到其标题:
请注意为什么我会收到第二个视图输入事件(视图输入),但是从视图中移出并移到相邻标题上的每个都会触发一个 updateTilebar() 调用,这在视觉上是断断续续的 - 到目前为止还没有通过动画进行补救:
所以我的问题是当区域相邻时如何推迟行动。
它们(标题栏和内容视图)不是彼此的兄弟,所以不认为 hitTest() 是可行的,但基本上如果我能判断我是否正在移动到相邻的跟踪区域,我希望它是一个不 -同上。
任何关于动画为什么不起作用的帮助都会是一个加分项。
macos - 确保在嵌套的 NSScrollViews 中刷新 NSTrackingArea
我在 NSScrollView 中有一个 NSCollectionView。滚动视图水平滚动以沿项目行移动。每个集合项内部都有一个垂直滚动的 NSOutlineView。
我有用于打开和关闭集合项目的 NSButton 对象 - 作为我集合中的补充视图。我在这些按钮上设置了 NSTrackingAreas 以支持鼠标悬停效果。
这可以正常工作,直到我滚动,此时 NSTrackingArea 区域明显落后(当鼠标位于按钮所在的位置时,鼠标悬停效果发生,而不是它所在的位置)。
我在按钮类的 updateTrackingAreas 中重建了我的跟踪区域,这被调用了,但不够频繁。
我在设置跟踪区域时尝试使用 .inVisibleRect,而不是显式重建它们,但这并不能改善跟踪更新。
当滚动发生时,我尝试在 NSCollectionView 上调用 updateTrackingAreas,但它从未像我预期的那样传递给子视图。
附带说明一下,我的集合视图项目中也有 NSTextViews,它们的工具提示也非常脆弱。他们经常被挂着。指向链接上的手形光标经常错位。
感觉好像默认的 updateTrackingArea 被过度优化了,并且没有像它应该的那样经常被调用。
因此,我将着手构建自己的跟踪区域跟踪器,以在默认情况下未更新视图时注册和更新我的视图...
...但也许有人可以看到我遗漏的明显东西?谢谢你。
swift - mouseMoved 在 NSTrackingArea 之外触发
NSTrackingArea
我正在为我的特定部分设置一个NSTextView
,以便mouseMoved
仅在此矩形内触发 etc 方法。这是我的代码:
然而,mouseMoved
等。为整个视图而被解雇。
所以我的问题是:当鼠标在跟踪区域之外时,为什么会触发 mouseMoved ?上面的代码有错误吗?
编辑:
显然,在某个地方,为整个视图添加了一个 trackingArea,正如我在调试面板中看到的那样:
删除super.updateTrackingAreas()
并不会改变这一点,因此正在发生其他事情。我可以使用 删除它trackingAreas.forEach { if $0.rect == self.bounds { removeTrackingArea($0)} }
,但它似乎在mouseMoved:
被触发时添加回来(见评论)。
swift - NSTrackingArea 并不总是更新游标
我很难使用NSTrackingArea
更新光标来显示我的自定义可拖动对象的NSView
大小。这是一个例子:
NSRect
用于手柄:
追踪区域:
最后,游标更新:
光标在进入或离开蓝色框时应该会发生变化,但只有 50-75% 的时间会发生这种情况。这是一个光标在进入时不改变但在离开时改变的示例。