问题标签 [nsresponder]

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 回答
62 浏览

macos - 撤消 makeFirstResponder

我想要一个NSTextField防止空字符串的,所以我子类化NSTextField并实现了这个方法

当我的新文本字段是窗口中的第二个控件但不是第一个控件时,此方法有效。在这些情况下,即使文本非空,我也无法从 Subclassed 文本字段中跳出

那么,如何撤消该makeFirstResponder方法?或者有没有办法让新的文本字段成为当前的响应者

提前致谢

斯图波特。

0 投票
0 回答
109 浏览

ios - SKNode 在响应者链中的位置在哪里?

SKNode 从 NSResponder 继承,但我无法理解节点如何包含在响应者链中以及它们的插入位置。

例如,SKNode 如何接收mouseDown:消息?

单击视图时,会发生命中测试过程以确定命中位置的最深视图,然后mouseDown:从该点向上发送响应链。

SKNode 不是视图,因此它们无法直接发送此消息(因为它由 SKView 处理)。那么它们是如何包含在响应者链中的呢?

0 投票
2 回答
2434 浏览

ios - Swift 中的响应者链(UIButton 目标中的目标为零)

我在快速使用响应者链时遇到了问题。

当我使用 nil 目标设置按钮目标时,例如:

该动作将向上发送到响应者链,直到该动作在控制器中被处理。到目前为止,一切都很好 :-)

但我想拦截动作,执行一些代码并将其传递给控制器​​。但我找不到快速做到这一点的方法。在 ObjC 中,这项任务很容易完成,所以我想也应该有一种快速的方法。

提前感谢您的帮助:-)

0 投票
1 回答
249 浏览

swift - 不安全可变指针到 [NSObject : AnyObject]

我正在重写 NSResponder 的mouseEntered(theEvent: NSEvent)方法,并想检索我在 Swift 中创建 NSTrackingArea 时设置的值。我正在使用构造函数来创建 NSTrackingArea 并将以下对象作为userInfo.

view : NSView以及trackingRect : NSRect确实存在)

我正在设置trackerDatauserInfo以便稍后在mouseEntered(theEvent: NSEvent).

我的代码基于Apple 提供的这个Objective-C 示例代码。引用第 372 行SuggestionsWindowController.m

那么我怎样才能阅读事件的userData

我看过这个 StackOverflow Q&A但它不起作用。

在此处输入图像描述

0 投票
1 回答
136 浏览

cocoa - 在 Cocoa 中捕获未处理的键盘事件

我正在开发一个 Cocoa 应用程序。

我想捕捉所有没有被任何响应者处理的键盘事件,并将它们报告给谷歌分析。

为此,我想设置一个自定义NSResponder,实现keyDown:为当前最后一个响应者的下一个响应者。

setNextResponder:为了让我的自定义类成为最后一个响应者,我应该何时何地打电话?

0 投票
1 回答
184 浏览

cocoa - 是什么改变了我的 NSWindow 的下一个响应者?

我正在尝试调试由 main 的下一个响应者更改引起的问题NSWindow。我有一个内部的NSView和一个自定义的链NSResponder,但是即使在调试和坚持断点之后setNextResponder,我也从不停止其中一个,我所做的只是改变窗口的样式。

我怎样才能得到什么改变了下一个响应者?仅仅是因为风格变化吗?我在文档中找不到它。有什么我想念的吗?哪些操作会弄乱响应者链?

0 投票
1 回答
84 浏览

swift - 当一个窗口中存在多个 NSTextView 时,接收键入的键的一个不一定是接收命令键的那个。为什么?

我很难理解 OS X 中的响应者链。

我有一个 NSTextView 子类,我希望它响应命令键并执行某些操作。我已经为我的问题创建了一个非常简单的演示。任何有兴趣的人只需几分钟的努力就可以看到。

创建一个新的 OS X 项目,这里是您唯一需要的附加代码。在 Swift 中创建一个名为 MyTextView 的新类(NSTextView 的子类)并将其粘贴到其中:

现在在您的故事板中,将 2 个或更多 NSTextViews 放入同一个 contentView。在 Identity Inspector 下,告诉每个 NSTextView 它的类是 MyTextView(NSTextView 嵌套了一点:NSScrollView > NSClipView > NSTextView)。

运行项目。点击 cmd 等于。其中一个文本视图改变了它的背景颜色,但它不一定是拥有光标的那个,它正在接收所有其他按键。它不一定是从光标开始的那个。而且,如果您将光标放在不同的 textView 中,它仍然不会改变哪个响应命令键。

这是为什么?为什么接收键入的击键的文本视图与接收命令键的文本视图不同?显然,文本视图知道谁应该接收击键,因为打字有效。但是我的命令键交给了其他人。

0 投票
2 回答
552 浏览

macos - NSView 禁用平滑滚动

我有一个MTKView,我正在渲染一个三角形,我希望能够使用调用scrollWheel:方法的两指拖动手势来翻译它。scrollWheel:方法的默认行为是产生额外的滚动事件来实现随着时间推移而逐渐消失的平滑滚动。我想禁用该行为,并在我将手指从触控板上抬起时立即结束刚性滚动。有谁知道如何禁用NSView的平滑滚动?

0 投票
1 回答
143 浏览

macos - nextKeyView 跳转到 NSBrowser 和工具栏中的搜索视图

我在 Mac OS X 应用程序中要求用户能够在单个窗口中的后续项目之间切换,

  • 工具栏中的 NSSearchField
  • NS浏览器
  • NSCollectionView
  • NSCollectionView(第二个)
  • NSC组合框

当用户仅在文本框和列表之间进行制表符时。由于某种原因,NSBrowser 似乎不算作列表,工具栏中的 NSSerachField 似乎不算作文本框。但是,如果我移动选项卡,我可以在 NSSerachField 中向后移动选项卡

如果我将控件设置之间的选项卡更改为所有控件之间的选项卡,则 NSBrowser 和 NSSearchField 都是选项卡,但是我有一个单独的问题,您无法从 NSSearchField 中跳出。我假设这意味着我的 nextKeyView 链是好的,或者当启用所有控件之间的选项卡时,nextKeyView 值完全被忽略。

我在界面生成器中设置了 nextKeyViews。

有什么方法可以让 Mac OS 将 NSBrowser 视为一个列表,我已经在继承 NSBrowser。如果它在工具栏中,是否有一个文本框不能被选项卡进入的原因。

另一个问题是 NSBrowser 和第一个 NSCollectionView 在 NSTabView 中,第二个 NSCollectionView 也在 NSTabView 中,NSTabViews 动态添加和删除了 NSTabViewItems,所以内容有点像文档。我将 NSTabViews 设置为 nextKeyView,然后在将 NSTabViewItems 添加到 NSTabView 后立即为其设置 initialFirstResponder。我还为 NSBrowser 设置了 nextKeyView 选项卡到 NSCollectionView。并且windows的initialFirstResponder设置为第一个NSTabView。

附加信息我已自动重新计算 KeyViewLoop 为否。通过在代码中设置下一个响应者,我已经设法让它暂时工作,但随后似乎发生了一些事情,Cocoa 去改变了这一切。

0 投票
1 回答
289 浏览

cocoa - 无法在自定义 NSViewController 中注册鼠标事件

这是我的代码,为简洁起见进行了简化:

MainMenu.xib有一个单独的窗口,您可以在上面的 AppDelegate 中看到它。

当我按下键盘上的按钮时,我会在控制台中看到“栏”。当我单击鼠标时,我什么也看不到。单击鼠标后,将不再注册任何键事件。

我错过了什么?为什么鼠标事件会偷走响应者链,它要去哪里?