问题标签 [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 投票
2 回答
2623 浏览

macos - 如何将菜单操作路由到窗口内的 NSViewController?

我在主应用程序菜单中有一个菜单项,我想将其操作路由到视图控制器 ( NSViewController)。界面层次结构如下所示:有一个主应用程序窗口控制器,由NSWindowController. 窗口内部有一个拆分视图,拆分视图中的右视图由NSViewController.

菜单项连接到 Interface Builder 中的 First Responder。有问题的视图控制器实现了适当的方法,但菜单项保持禁用状态。当我将方法移至 时NSWindowController,菜单项将启用。

我想我需要将视图控制器获取到响应者链,所以我将它设置nextResponder为窗口控制器;没有雪茄。我究竟做错了什么?

0 投票
2 回答
2110 浏览

cocoa - 按键时发出不需要的蜂鸣声

我有一个接受键输入的自定义视图,它在NSScrollView. 我已将其设置acceptsFirstResponder为 yes 并且它成功接受了 keyDown。但是每次我敲击一个键,我都会听到一声哔哔声。我确定还需要其他东西,但不记得是什么了。请帮忙。

0 投票
2 回答
1602 浏览

objective-c - 是否有用于 flagsChanged: 的 KeyUp: 方法?

我已经- (void)flagsChanged:(NSEvent *)theEvent在我的应用程序中实现了该方法。当我按住 [alt] 键时,它工作正常。该方法仅在按下键时发送,但在我再次松开时不会发送。- (void)keyUp:(NSEvent *)theEvent不会被调用。无论如何可以查看 [alt] 键何时释放?

这是代码:

0 投票
1 回答
1828 浏览

cocoa - 允许 childWindow 中的视图成为 key 而不会失去对 parentWindow 的关注

我将 NSWindow 的自定义子类的 childWindow 添加到 parentWindow(也是 NSWindow 的自定义子类)。childWindow 具有 NSBorderlessWindowMask 和 canBecomeKeyWindow: 被覆盖以返回 YES 和 canBecomeMainWindow: 以返回 NO。

childWindow 设置为与 parentWindow 一起调整大小。所以我想创造一种错觉,即 childWindow 的视图是 parentWindow 的一部分。主要思想是将由基于文档的应用程序创建的文档窗口安排在一个主窗口中,以提供一个选项卡式界面(就像在浏览器中一样)以在文档之间切换。

我的问题是,每当我单击 childWindow 的一个视图时,parentWindow(主窗口)就会失去焦点,并且交通灯按钮变灰。这显然与我想要达到的目标背道而驰。

我找到了这个答案: Make NSView in NSPanel first responder without key window status

但是,即使我覆盖 isKeyWindow:(主窗口的)以始终返回 YES,但当我单击 childWindow 时,标题栏仍然显示为灰色。

我也尝试遵循这个建议: http: //www.cocoabuilder.com/archive/cocoa/143945-non-focused-child-window.html

但我不确定“在其 nextResponder 之前的响应者链中包含子窗口”是什么意思。使用 canBecomeKeyWindow: 返回 NO(对于 childWindow),孩子中的视图永远不会成为键并且总是灰色的。

任何线索我做错了什么?

一个补充:是否可以在不提供 childWindow 键状态的情况下在 childWindow FirstResponder 中创建视图?

0 投票
2 回答
1523 浏览

objective-c - nextKeyView 不工作

我开发了一个应用程序,它有一个表格视图和 4 个文本字段。

当我运行该应用程序时,通过提供 TAB,控件不会按顺序运行。为此,我设置initialResponder为 tableView,然后将 tableview 的 nextKeyView 连接到 textfield,相应地我为其余字段提供了连接。但控制仍然没有有序进行。

问题是什么?我错过了什么吗?还是有其他方法可以做到这一点?

0 投票
2 回答
378 浏览

objective-c - 二次单击nsresponder,右键单击不起作用

我试图让 NSOutlineView 接受二次点击,但似乎无法弄清楚。我尝试将二次点击从两根手指更改为触控板上的右角和左角,但我仍然没有在鼠标按下事件的大纲视图中得到任何响应。谁能帮我?

更新:

如果我使用它,则会记录二次点击,但它仍然没有出现在 rightMouseDown: 函数中。

更新:

我仍然不知道如何解决这个问题。我的 NSCollectionView 响应 rightMouseUp 但不响应 rightMouseDown。怎么来的?

tnx

0 投票
0 回答
793 浏览

cocoa - -swipeWithEvent:直到发生两指滚动时才调用

我在NSView里面有一个子类,NSScrollView它实现了-swipeWithEvent. 我注意到swipeWithEvent:在用户第一次在触控板上执行两指滚动之前,它永远不会被调用。之后,它始终如一地工作。什么可能导致这种情况?

0 投票
1 回答
1020 浏览

objective-c - Cocoa 和 XCode 中的 KeyEvents

我正在通过为 OSX 构建一个基本的计算器应用程序来学习 Objective-C。一切都很好,除了我需要允许按下键盘上的某些键来做同样的事情,就像你点击界面上的按钮一样。

我读到的所有内容都说要捕获这些,您必须在 NSResponder 的子类中具有逻辑。我的问题在于我如何“连接”该文件。创建一个新的 .h 和 .m 文件,它是 NSResponder 的子类,如下所示:

响应者.h


响应者.m


应用程序如何知道使用该文件?.xib文件的界面中是否有我拖动蓝色箭头并将其“连接”到某处的地方?我什至做得对吗?我已经在谷歌上搜索了一段时间,几乎所有内容都假设我知道如何将 NSResponder 子类放入我的应用程序中。我认为我真的错过了一个基本概念。任何帮助表示赞赏!

0 投票
1 回答
1221 浏览

macos - 按住 Cmd ⌘ 键时 NSResponder 未收到 keyUp 事件

我正在使用 NSView 的自定义子类并通过 keyDown/keyUp 方法接收键盘事件,一切正常,除非按下“Cmd ⌘”键,keyDown 事件正常触发但 keyUp 事件永远不会出现。

在我们的例子中,我们自己使用箭头键来向左/向右/向上/向下移动图像,如果用户在按下左/右的同时按住“Cmd ⌘”,它将旋转图像。由于我们得到了 keyDown 事件,图像开始旋转,但它永远不会停止,因为 keyUp 永远不会出现。其他修饰符没有这个问题(例如,如果在按下另一个键时按住 shift、ctrl 或 alt,我们会按预期获得 keyUp)。一种选择是使用不同的修饰符,但最好使其与 PC 版本保持一致(当在 Windows 上使用 Ctrl 时,Cmd 用作替代,使其与标准复制/粘贴命令等保持一致)。

有谁知道它为什么这样做?感觉就像一个错误,但可能只是奇怪的“正确行为”,任何如何绕过它的想法(除了使用替代修饰符或使用直接 HID 访问之类的东西)。

谢谢。

0 投票
2 回答
749 浏览

macos - Mac OSX Dev:自定义 ViewController 未接收鼠标事件

我需要创建一个快速演示应用程序(尽快)。它有一个 NSImageView(带有全窗口大小的照片),鼠标点击、拖动和移动。

还有一个 NSTextField (Label) 来显示鼠标事件和窗口上的位置。

我已经使用 Cocoa 应用程序模板创建了一个项目,并创建了一个新的 ViewController,将该视图控制器视图添加到 windows contextView 中,并且 NSImageView 显示得很好——标签也是如此。

然而事件如

不要做任何事。如果我在那里有一个 NSLog,他们永远不会受到打击。

我已经设定:

但这也没有任何区别。

有人可以指出我做错了什么吗?我是 2 年以上的 iOS 开发人员,这是我的第一个 Mac OS X 应用程序。我必须在接下来的 24 小时内完成这项工作:(