问题标签 [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 回答
761 浏览

swift - 自定义 NSStoryboardSegue 未将 NSViewController 添加到响应者链

总体目标:在 macOS 上使用自定义故事板 segue

手头的问题是响应者链。据苹果称:

此外,在 macOS 10.10 及更高版本中,视图控制器参与响应者链。NSViewController

如果我在 macOS 故事板中使用标准 segue,则目标视图控制器的行为符合预期——焦点、等效键、响应者链等。

但是,如果我使用自定义 segue,则目标视图控制器的行为不符合预期:( 具体来说,关键等效项神秘地无法工作 - 但是,在测试中,来自视图控制器的按钮上的关键等效项继续工作(这不是t 有帮助/需要)

在 macOS 10.12 上,我正在使用以下自定义 segue……我做错了什么?

0 投票
1 回答
382 浏览

macos - 为什么 -[NSTextInputClient doCommandBySelector:] 不应该将事件传递给响应者链?

文本视图不应该将不可调用的命令转发到响应者链上,文档-[NSTextInputClient doCommandBySelector:]

如果aSelector无法调用,则doCommandBySelector:不应将此消息向上传递到响应者链。NSResponder也实现了这个方法,它确实将不可调用的命令向上转发到响应者链,但文本视图不应该。NSTextInputClient实现协议的文本视图继承自NSView,which 继承自NSResponder,因此您对此方法的实现将覆盖NSResponder. 它不应该调用超级。

最后一句话没有澄清,只是重新表述了如果我的文本理解没有让我失望的话,事情是如何设置的。

所以基本上只有一个处方:“文本视图不应该”。时期。

但为什么?

例如,我可以理解一种情况,您希望文本视图不对任何/所有NSResponder方法做出反应,而是将这些方法委托给它的视图控制器。这会引起麻烦吗?这只是在 macOS 应用程序中保持文本视图行为一致的建议吗?

0 投票
2 回答
248 浏览

cocoa - 如何选择滚动到视图之外的 Cocoa 文本编辑字段

我在滚动视图旁边有一个带有单个文本编辑字段的窗口。滚动视图的文档视图包含多个子视图,其中一些子视图包含以编程方式创建为 NSTextViews 的文本编辑字段。

当应用程序启动窗口时,顶级文本编辑字段显示为焦点,因此(我认为)它是第一响应者。用户然后点击 TAB 键,但第一个文本编辑字段(在许多字段中)位于文档视图的子视图中,该子视图已滚动到用户视线之外。

该应用程序的默认行为是将焦点移至“下一个”文本字段。除了用户不知道这是在哪里,因为它不在视野范围内。

因此,应用程序应该有两种可能的行为方式。应用程序应该找出下一个响应者明显超出范围,并防止 TAB 键更改当前焦点。或者应用程序应该确定哪个文本编辑字段获得了新焦点,并自动滚动,以便用户现在可以看到该文本字段。可以说这两种情况都是合乎逻辑的,但我认为后者更有用。

一个人如何确定焦点已自动更改为一个认为它是可见但不可见的普通文本编辑控件,因为它被父滚动视图剪裁了?

0 投票
1 回答
240 浏览

swift - 在appkit中禁用右键单击

我目前正在我的 mouseDrag 函数中接收 nextEvent

我只是想在此期间禁用右键单击。但是,使用此实现,右键单击只需排队并在循环完成后被调用。

我将如何禁用正在注册的右键单击?

0 投票
0 回答
64 浏览

macos - supplementalTargetForAction:sender: 没有被调用

我正在尝试将菜单项中的操作发送到 NSSplitViewController 的子视图控制器。据我了解,我应该覆盖supplementalTargetForAction:sender:splitViewController 以将子视图控制器提供给响应者链(请参阅这篇文章)。

但是,supplementalTargetForAction:sender:永远不会被调用。

该文档指出:

如果这个 NSResponder 实例本身没有 respondsToSelector:,则调用supplementalTargetForAction:sender:。

在调试工作中,我创建了一个只有普通 viewController 的新 Xcode 项目,重写了那里的方法以查看它是否被调用 - 它没有。

这是我的代码:

故事板屏幕截图

我究竟做错了什么?

0 投票
1 回答
131 浏览

cocoa - NSTextField 在相邻的 NSTableView 重新加载时失去焦点

我有一个NSTextField名为 ( )的搜索字段searchField,当您输入它时,它会刷新 a 中显示的数据NSTableView。问题是这个刷新也触发了对表格行的选择,这将焦点从NSTextField.

用户在搜索字段中输入:

然后在NSTableView这里重新加载:

如果我同时注释掉 thereloadData()和 the ,selectRowIndexes则搜索字段的行为符合预期(我可以继续输入并将焦点保持在该字段中)。但是,如果包含这些方法中的一个或两个,则在我键入第一个字符并被refreshData()调用后,搜索字段就会失去焦点。

我怎样才能在我的搜索字段中保持焦点,而不是让表格重新加载劫持焦点?

0 投票
1 回答
234 浏览

swift - NSView 获得焦点的方向(标签或后退标签)?

NSDatePicker我有一个自定义视图,它有多个可以接收焦点的组件,类似于textFieldAndStepper样式。如果它获得焦点,则第一个组件被聚焦。然后,您可以通过选项卡浏览组件。如果您在最后一个组件获得焦点时点击选项卡,则窗口中的下一个视图将获得焦点。当您使用 backtab(shift + tab)时,它会朝另一个方向发展。我该怎么做?

我目前在事件中沿着组件移动焦点keyDown,并且当用户选项卡超出最后一个组件或后退选项卡超出第一个组件时,我会覆盖becomeFirstResponderresignFirstResponder打开或关闭焦点。

但是,becomeFirstResponder我无法说出视图是如何获得焦点的。它可能是一个选项卡或一个后退选项卡或鼠标单击。

我如何在 中获取此信息becomeFirstResponder,或者是否有其他方法可以解决此问题。

请注意,出于各种原因,我不想介绍子视图。

这是我到目前为止的代码:

0 投票
1 回答
90 浏览

cocoa - 判断是否所有控件都能获得焦点(即成为第一响应者)

我需要检测是否有NSControl,例如NSButton,可以通过使用 Tab 键获得焦点。

如果用户在键盘/快捷方式/键盘/“更改选项卡移动焦点的方式”下的系统偏好设置中启用了该选项,则可以。

更具体地说,我喜欢让 NSButton 成为第一响应者,但前提是启用了“所有控件都可以获得焦点”模式。也许我可以询问控件是否接受 firstReponder 状态?

我尝试调用acceptsFirstResponder一个按钮,但即使使用 Tab 键不能成为 firstReponder,它也会返回 YES,所以这不是正确的方法。

0 投票
0 回答
198 浏览

react-native - 如何使用 PanResponder 管理速度?

我正在尝试使用包中的PanGestureHandler api react-native-gesture-handler,尤其是速度移动。

panGesture 的一切都运行良好,属性velocityXveloctyY存在于事件响应中,我想处理速度(运动的速度)。如何将这些变量用作乘数?

提前致谢

问候

0 投票
1 回答
2065 浏览

swift - 如何将故事板连接到 swiftui?

如何将故事板连接到 swiftUI?我试图去查找器/编辑器/助手,但它带我到“NSResponder.h”这是在 Mac OS 应用程序中连接代码和情节提要的正确位置吗?如果是这样,在哪里说文件?如果不是我该怎么办?