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

objective-c - 退出全屏模式后如何接收 NSView 的键盘事件?

当应用程序完成启动时,我将一个 NSView 子类化并启动全屏模式。该视图可用作fooView应用程序委托中的属性。

该类FooView本身实现以下功能。

离开全屏模式后,视图不再接收键盘事件。为什么?

编辑:
这似乎与我如何退出全屏模式有关。当我单击视图(而不是窗口)时keyDown:cancelOperation:请在以下内容中做出响应。

0 投票
1 回答
234 浏览

objective-c - 对按钮向上和向下执行不同的操作

好的。我一直在寻找一种方法来捕捉按钮向上和向下的动作。我什至不确定 Xcode 中的正确术语是什么。在 MS Visual 中这很容易,但我似乎无法找到如何使用 Xcode 做到这一点。

本质上,我想在按下并按住按钮时触发一个动作,然后在释放按钮时触发另一个动作。

我真的不知道该怎么做。任何提示或正确方向的指针将不胜感激!

0 投票
1 回答
1640 浏览

objective-c - 惯性滚动和 -ScrollWheel:在 OS X 上

问题:

我有一个 NSScrollView。我正在使用它来实现一个自定义的“表格视图”,其中包含实际上是 NSView 的数据行。(注意:这不是 NSTableView 的实例。)

当我垂直滚动(没有水平滚动)时,我使用 boundsChanged 通知添加(作为 scrollView 的 contentView 的子视图)变得可见的 NSView(具有与 scrollView 的文档可见矩形相交的框架)并删除那些不再可见(scrollView 的可见矩形之外的帧。)

除了惯性滚动之外,这个过程非常有效。如果我将光标悬停在单元格 X 上并且我轻拂触控板以惯性快速向下滚动,则单元格 X 会迅速离开可见的矩形,因此会从滚动视图的 contentView 中删除。但是,这会杀死惯性滚动。如果我不将单元格 X 作为子视图删除,则惯性滚动效果很好。

我需要的:

一种保持惯性滚动的方法,同时仍然删除用户开始滚动手势时光标恰好位于顶部的 NSView。

我试过的:

我看过 NSResponder 的方法:

默认实现将 scrollWheel 传递给下一个响应者。因此,我将 NSScrollView 子类化并实现了此方法,以尝试阻止它将 scrollWheel 事件传递给 scrollView 的 contentView 内的各个子视图。没用。

然后我进入我的 NSViews(我添加到 contentView 的那些)并覆盖 scrollWheel 以将事件传递回 scrollView 本身。没用。

在这两种情况下我仍然会滚动,但不是惯性。

有任何想法吗?谢谢!

0 投票
1 回答
323 浏览

objective-c - keyDown:即使它在 AcceptFirstResponder 中实现的类也没有响应

我已经在我的应用程序中创建了我的 NSView。

现在我实现的 keyDown: 没有响应...断点或 NSBeep(); 我已经实施了不开火。

我在同一个班级中实施的 mouseDown 工作正常......

为什么我的 keyDown 没有响应的想法?

0 投票
1 回答
230 浏览

cocoa - 悬停窗口标题时NSResponder mouseExited

我有一个带有 NSToolbar 和内容视图的 NSWindow。我已将跟踪区域设置为视图的整个框架。

我希望在光标离开内容视图并进入工具栏和/或窗口标题时触发 mouseExited 事件。实现这一目标的最佳方法是什么?我应该将跟踪区域绑定到工具栏的正下方吗?

我需要这个的主要原因是因为我的视图需要一个特殊的光标。所以我在 mouseEntered 中更改它并希望在 mouseExited 时再次更改它

谢谢

0 投票
3 回答
3455 浏览

objective-c - 在视图上时未调用 mouseMoved

我有实现 mouseMoved 的 NSView 子类。

但是,当我将鼠标移到视图上时,mouseMoved 永远不会被调用。为什么?

我在 OS X Lion 上。

谢谢,万斯

0 投票
5 回答
19084 浏览

iphone - UIScrollView 防止视图控制器上的 touchesBegan、touchesMoved、touchesEnded

我正在处理我的视图控制器(UIViewController 的自定义子类)中的几个 UI 组件的触摸。它有方法touchesBegan:withEvent:touchesMoved:withEvent:touchesEnded:withEvent:。它工作正常。然后我添加了一个滚动视图 (UIScrollView) 作为层次结构中的顶视图。

现在我在视图控制器上的触摸处理程序不起作用。他们不会被召唤。有趣的是,我在滚动视图中有各种其他的 UI 组件可以工作。有些是按钮,有些是定义自己的自定义视图touchesBegan:withEvent:,等等。唯一不起作用的是视图控制器上的触摸处理程序。

我想可能是因为滚动视图为了自己的目的而拦截了这些触摸,但我将 UIScrollView 子类化,只是为了看看我是否可以让它工作,我YES总是从. 还是不行。touchesShouldBegin:withEvent:inContentView:NOtouchesShouldCancelInContentView:

如果它有所不同,我的视图控制器位于标签栏控制器中,但我认为它不相关。

有没有人遇到过这个问题并有现成的解决方案?我的猜测是滚动视图猴子在响应者链上。我可以猴子回来吗?我想如果我想不出其他任何东西,我会让滚动视图下的顶级视图成为自定义视图并将消息转发到视图控制器,但看起来很笨拙。

0 投票
2 回答
2644 浏览

objective-c - mouseDragged 事件被另一个视图窃取

我在另一个内部有几个类MyView(的子类)的视图。实现, , , , 和.NSViewNSViewMyView-mouseEntered:-mouseExited:-mouseDown:-mouseDragged:-mouseUp:

几乎总是,当 aMyView接收到鼠标按下事件时,所有后续的鼠标拖动事件都会被相同的接收到,MyView直到下一个鼠标按下事件。即使光标超出MyView. 这是预期的行为。

偶尔, aMyView会接收到鼠标按下事件,但只会在光标停留在MyView. 如果光标移动到不同的MyView,那么它MyView开始接收鼠标拖动事件(没有首先接收鼠标按下事件)并且可以接收随后的鼠标向上事件。

FooView万一它很重要,鼠标按下事件会NSView在. 这可能是相关的,因为我只能在创建其中一个之后才能重现该问题。不实现任何鼠标事件方法。MyViewFooViewFooViewFooView

我已经搞砸了一段时间,并且无法故意重现该问题或在一个简单的示例中重现该问题。我很乐意回答有关我的代码的任何问题,我只是不确定要发布的相关部分是什么。

0 投票
2 回答
1211 浏览

osx-lion - 在 OS X 10.7.2 下解锁对错误视图 ((null)) 的关注

我有一个 Cocoa 应用程序,其中包含一个控制NSWindowController项。没什么特别的,在升级到 OS X 10.7.2 之前它运行良好。现在我得到以下异常,当窗口控制器的窗口加载时,它只发生一次。(由于我的应用程序中的窗口控制器保持加载状态,每次应用程序启动只会发生一次。)随后聚焦和取消聚焦组合框不会触发它。NSWindowNSComboBox

任何人都知道 10.7.2 中是否发生了变化,如果是,如何解决?

(这发生在 Xcode 4.2 中。)

0 投票
4 回答
1705 浏览

objective-c - 将拖放事件转发到父视图

我有一个应用程序,其中有一个从 NSView 派生的自定义视图。在这个视图中,有几个自定义的子视图,它们也是从 NSView 派生的。

我想实现允许将 URL 拖放到视图上的拖放行为。一切都已经为主视图工作了。

所以,实际上我必须在子视图和父视图类上实现拖动行为处理程序。问题是,我不想将完整的处理代码复制到所有子视图以使它们也接受拖动事件。所以我认为这将是让他们将所有拖动事件转发到父视图的最佳方式。

这有可能吗?不确定我是否可以通过响应者链以某种方式进行设置?

任何提示都非常感谢!提前致谢。