问题标签 [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.
objective-c - 如何将鼠标事件从 NSView 传递到 NSViewController?
我有 TabViewController,并且我有为它制作自定义 NSView TabView,我在 XIB 中继承了它。
现在我已经成功地在 TabView 中实现了所有鼠标句柄事件并工作了。
我想要 TabViewController 中的相同事件,但我不能。
我尝试过论坛、博客和苹果文档中建议的方法。但我无法得到它。
带有鼠标句柄代码的 TabView。
每个鼠标方法都被调用。我想要这个在TabViewController
.
如果有人做过同样的程序,请建议我。
macos - NSResponder resignFirstResponder 触发错误的对象
我有一个带有一些 NSTextFields 的 Mac 应用程序(SDK 10.10):
由于我需要在文本字段获得和退出焦点时得到通知,因此我将 NSTextField 子类化:
运行此代码并在 3 个文本字段之间切换时,我在控制台中得到以下输出:
每次我按 TAB 键(或单击其中一个非活动文本字段)时,应用程序都会输出
那不应该是
???
我这里有什么大错特错吗?
的文档- (BOOL)resignFirstResponder
说
通知接收者它被要求在其窗口中放弃其作为第一响应者的状态。
那么为什么会resignFirstResponder
召唤新的第一响应者而不是旧的第一响应者呢?
objective-c - magnifyWithEvent:仅在激活应用程序时调用
我的NSViewController
工具magnifyWithEvent:
。窗口是一个NSPanel
带有NSNonactivatingPanelMask
作为styleMask
标志的窗口。
因此,打开窗口并使用它不会激活 NSApplication。这意味着旧窗口不会失去焦点。这是期望的行为。
不幸的是,magnifyWithEvent:
仅在应用程序激活时调用。为什么是这样?如何在magnifyWithEvent:
不激活应用程序的情况下接听电话?
objective-c - initialFirstResponder 在开始时没有获得焦点环
我在启动时在我的 AppDelegate 中设置了initialFirstResponder
of (到自定义 NSTextField)。window
我预计这会导致NSTextField
衍生产品在其周围带有蓝色聚焦环的情况下启动 - 它不会。只有在键盘上的一个 TAB 上才会出现这种情况......
我通过执行以下操作解决了这个问题:
但上面的内容似乎是错误的——就像我做了两次同样的事情。
cocoa - NSView在拖动窗口时获取拖动事件
在我的应用程序中有一个奇怪的问题,即当窗口在屏幕上拖动时,自定义NSView
接收转发的 mouseDragged 事件,通常是通过其工具栏。
从堆栈跟踪看来,Cocoa 框架是自行完成的。
(可能是通常的响应者链)
现在我正在尝试检测拖动事件是来自我的视图还是来自其他地方 -是否有任何强大的方法可以做到这一点?
我找不到可以存储发生鼠标按下的视图的公共成员(尽管NSEvent
似乎将其内部存储在私有字段中)。
或者任何配置窗口不转发拖动消息的选项?
任何提示表示赞赏!
macos - 是否可以在 Mac 上使用特定于应用程序的键绑定来覆盖用户键绑定?
用户特定的 keyBindings .dict 文件位于:~/Library/KeyBindings/
您(作为开发人员)如何告诉AppKit
在另一个目录(特定于应用程序)中查找特定应用程序的另一个绑定文件。这不需要覆盖用户特定的,因为它可以用于文本操作以外的功能。
由于以下原因,这可能很有用:
- 更改您的应用程序的 keyBindings 而不会弄乱系统其余部分的用户设置(特别是在您的对象不一定是文本输入对象的情况下)
- 添加未在中找到的其他操作方法
NSResponder
引用 Cocoa 事件处理开发人员指南(第 68 页)。重点是我的。
它可以通过调用NSResponder 方法interpretKeyEvents: 将事件传递给Cocoa 的文本输入管理系统。输入管理系统根据所有相关键绑定字典中的条目检查按下的键,如果匹配,则将 doCommandBySelector: 消息发送回视图。否则,它会向视图发送一个 insertText: 消息,视图实现此方法来提取和显示文本。
cocoa - 如何从 NSTextField 的字段编辑器中截取击键?
介绍
当我的自定义NSTextField
处于“文本编辑模式”并且field editor
已经放置在它前面时,因为firstResponder
我不再通过NSTextField.keyDown(...)
. 我了解击键现在正在通过field editor
. 大多数在线建议是在 custom 的委托中覆盖以下方法NSTextField
:
我确实覆盖了这个方法,但它似乎没有被调用?请参见下面的代码:
我唯一要做的另一件事是将我的自定义委托设置NSTextField
为上述类的实例。我也尝试将上面的方法直接放入自定义NSTextField
类中——它不会导致任何错误,但也不会被调用。
问题
- 在让代表打电话上班时,我在上面遗漏了什么?
- 除了创建我自己的自定义字段编辑器之外,这是唯一的方法吗?可以
textDidChange(notification: NSNotification)
不被询问以产生按下的键吗? - 在使用
control(_:textView:doCommandBySelector:)
委托方法时,我如何捕获没有标准键绑定的键的按下。特别是,我想截取不映射到任何标准选择器的组合键“shift+enter”。(隐含的问题:你只能映射到 NSResponder 中的标准键操作方法吗?)
ios - 在 self.view 上添加的 UIView superview 返回 nil
我检查视图是否已经添加/存在,然后我需要将其删除
self.upgradeView 添加在 self.view 上。但条件返回 false 并且 self.upgradeView 永远不会被删除。
有什么遗漏的吗?
==========================更新======================== =============
我在 viewwillappear 中添加了这段代码,就在用于在 self.view 上添加 self.upgradeView 的代码下方,如下所示