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

objective-c - 如何将鼠标事件从 NSView 传递到 NSViewController?

我有 TabViewController,并且我有为它制作自定义 NSView TabView,我在 XIB 中继承了它。

现在我已经成功地在 TabView 中实现了所有鼠标句柄事件并工作了。

我想要 TabViewController 中的相同事件,但我不能。

我尝试过论坛、博客和苹果文档中建议的方法。但我无法得到它。

在此处输入图像描述

带有鼠标句柄代码的 TabView。

每个鼠标方法都被调用。我想要这个在TabViewController.

如果有人做过同样的程序,请建议我。

0 投票
2 回答
582 浏览

macos - NSResponder resignFirstResponder 触发错误的对象

我有一个带有一些 NSTextFields 的 Mac 应用程序(SDK 10.10):

xib文件

由于我需要在文本字段获得和退出焦点时得到通知,因此我将 NSTextField 子类化:

运行此代码并在 3 个文本字段之间切换时,我在控制台中得到以下输出:

每次我按 TAB 键(或单击其中一个非活动文本字段)时,应用程序都会输出

那不应该是

???

我这里有什么大错特错吗?

的文档- (BOOL)resignFirstResponder

通知接收者它被要求在其窗口中放弃其作为第一响应者的状态。

那么为什么会resignFirstResponder召唤新的第一响应者而不是旧的第一响应者呢?

0 投票
0 回答
167 浏览

objective-c - magnifyWithEvent:仅在激活应用程序时调用

我的NSViewController工具magnifyWithEvent:。窗口是一个NSPanel带有NSNonactivatingPanelMask作为styleMask标志的窗口。

因此,打开窗口并使用它不会激活 NSApplication。这意味着旧窗口不会失去焦点。这是期望的行为。

不幸的是,magnifyWithEvent:仅在应用程序激活时调用。为什么是这样?如何在magnifyWithEvent:不激活应用程序的情况下接听电话?

0 投票
0 回答
240 浏览

objective-c - initialFirstResponder 在开始时没有获得焦点环

我在启动时在我的 AppDelegate 中设置了initialFirstResponderof (到自定义 NSTextField)。window我预计这会导致NSTextField衍生产品在其周围带有蓝色聚焦环的情况下启动 - 它不会。只有在键盘上的一个 TAB 上才会出现这种情况......

我通过执行以下操作解决了这个问题:

但上面的内容似乎是错误的——就像我做了两次同样的事情。

0 投票
1 回答
123 浏览

cocoa - NSView在拖动窗口时获取拖动事件

在我的应用程序中有一个奇怪的问题,即当窗口在屏幕上拖动时,自定义NSView接收转发的 mouseDragged 事件,通常是通过其工具栏。

从堆栈跟踪看来,Cocoa 框架是自行完成的。
(可能是通常的响应者链)

现在我正在尝试检测拖动事件是来自我的视图还是来自其他地方 -是否有任何强大的方法可以做到这一点?

我找不到可以存储发生鼠标按下的视图的公共成员(尽管NSEvent似乎将其内部存储在私有字段中)。

或者任何配置窗口不转发拖动消息的选项?

任何提示表示赞赏!

0 投票
2 回答
56 浏览

macos - 标准 mac 键绑定行为不规律

0 投票
1 回答
554 浏览

macos - 是否可以在 Mac 上使用特定于应用程序的键绑定来覆盖用户键绑定?

用户特定的 keyBindings .dict 文件位于:~/Library/KeyBindings/

您(作为开发人员)如何告诉AppKit在另一个目录(特定于应用程序)中查找特定应用程序的另一个绑定文件。这不需要覆盖用户特定的,因为它可以用于文本操作以外的功能。

由于以下原因,这可能很有用:

  1. 更改您的应用程序的 keyBindings 而不会弄乱系统其余部分的用户设置(特别是在您的对象不一定是文本输入对象的情况下)
  2. 添加未在中找到的其他操作方法NSResponder

引用 Cocoa 事件处理开发人员指南(第 68 页)。重点是我的。

它可以通过调用NSResponder 方法interpretKeyEvents: 将事件传递给Cocoa 的文本输入管理系统。输入管理系统根据所有相关键绑定字典中的条目检查按下的键,如果匹配,则将 doCommandBySelector: 消息发送回视图。否则,它会向视图发送一个 insertText: 消息,视图实现此方法来提取和显示文本。

0 投票
2 回答
1290 浏览

cocoa - 如何从 NSTextField 的字段编辑器中截取击键?

介绍

当我的自定义NSTextField处于“文本编辑模式”并且field editor已经放置在它前面时,因为firstResponder我不再通过NSTextField.keyDown(...). 我了解击键现在正在通过field editor. 大多数在线建议是在 custom 的委托中覆盖以下方法NSTextField

我确实覆盖了这个方法,但它似乎没有被调用?请参见下面的代码:

我唯一要做的另一件事是将我的自定义委托设置NSTextField为上述类的实例。我也尝试将上面的方法直接放入自定义NSTextField类中——它不会导致任何错误,但也不会被调用。

问题

  1. 在让代表打电话上班时,我在上面遗漏了什么?
  2. 除了创建我自己的自定义字段编辑器之外,这是唯一的方法吗?可以textDidChange(notification: NSNotification)不被询问以产生按下的键吗?
  3. 在使用control(_:textView:doCommandBySelector:)委托方法时,我如何捕获没有标准键绑定的键的按下。特别是,我想截取不映射到任何标准选择器的组合键“shift+enter”。(隐含的问题:你只能映射到 NSResponder 中的标准键操作方法吗?)
0 投票
1 回答
928 浏览

ios - 代码=-1016“请求失败:不可接受的内容类型:文本/纯文本”用户信息=0x7a2da380

下面是java接口:

0 投票
3 回答
1681 浏览

ios - 在 self.view 上添加的 UIView superview 返回 nil

我检查视图是否已经添加/存在,然后我需要将其删除

self.upgradeView 添加在 self.view 上。但条件返回 false 并且 self.upgradeView 永远不会被删除。

有什么遗漏的吗?

==========================更新======================== =============

我在 viewwillappear 中添加了这段代码,就在用于在 self.view 上添加 self.upgradeView 的代码下方,如下所示