问题标签 [responder-chain]

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 投票
4 回答
31357 浏览

ios - 有什么方法可以询问 iOS 视图的哪个子视图具有第一响应者状态?

在 Mac OS X 中,您可以像这样找到第一响应者:

有什么方法可以在 iOS 中做到这一点吗?或者您是否需要枚举子控件isFirstResponder并向每个子控件发送消息?

0 投票
2 回答
840 浏览

ios - 当我添加 viewDidLoad 时 IBAction 不会触发

我有几个 IBAction 附加到 UIButtons。IBActions 工作正常,直到我添加以下代码:

在我添加那段代码后,IBActions 不会触发。当我触摸 UIButtons 时,它们会突出显示,但没有任何 IBAction 代码被命中。

这是我的 addGestureRecognizers 代码:

如果我注释掉 singleFingerTap 代码,它就可以工作。我猜我不应该使用 alloc,因为我之前已经在 doubleFingerTap 中分配过一次?

关于我可能在这里遗漏的任何想法?

0 投票
1 回答
237 浏览

ios - 使用响应者链查看何时添加子视图

它有任何方式让窗口告诉子视图的子视图已被添加。似乎有适当的架构(以响应者链的形式)允许一种事件冒泡视图层次结构,但这似乎只存在于处理用户交互。添加时 UIView 是否会发出任何类型的事件到它的superview?有没有办法让窗口知道何时在其后代视图层次结构中的某处添加了子视图?

0 投票
1 回答
1939 浏览

ios - 如何让 UITableView 标题视图出现在响应者链中的表格单元格之前?

我的表格视图上方有一个相当大的表格标题视图。我在该标题视图中有许多子视图。我正在做一些不标准的事情,我将其中一些子视图(但不是全部)“粘贴”在表格视图的顶部。

我的问题是,虽然从视觉上看,表格视图单元格在粘性表格标题子视图下方通过,但就触摸响应而言,表格视图单元格似乎“高于”表格标题视图。(例如:我有一个按钮,它是表格标题视图的子视图。当按钮下方没有单元格时,按钮工作得很好并且响应触摸。但是,当用户滚动表格视图以便有单元格时在按钮下方,触摸按钮实际上会选择一个隐藏的单元格,而不是按下按钮。)任何人都可以就如何“提升”表格视图单元格上方的表格标题视图提供建议,以便其子视图首先接触到处理?

我使用的是表格标题视图而不是部分标题视图,因为我只希望一些子视图保持不变(让其他子视图像往常一样向上滚动到屏幕外)。其中一个子视图也可以扩展(并且扩展是动画的) - 到甚至大于屏幕整个高度的高度。由于这些原因,我认为使用节标题视图是不可行的。(如果是,请告诉我,因为我知道在触摸响应方面,部分标题视图是“上方”表格单元格。)

0 投票
1 回答
216 浏览

cocoa - tryToPerform:with: 当 keyDown: 被调用时没有被调用

我有一个NSViewController我通过调用手动放入响应者链

当用户在视图内按下键时,我能够成功接收keyDown:消息。tryToPerform:with:但是,由于某种原因,validateMenuItem:当用户访问 MainMenu 栏时,我没有收到消息。我在这里想念什么?

0 投票
0 回答
503 浏览

objective-c - 事件 touchesForView:在超级视图中返回 null

我有一个名为 BigView 的 UIView 子类,它覆盖 touchesMoved (除其他外),如下所示:

我的 BigView 实例也有一个子视图(常规 UIView 实例) - 当我在该子视图内触摸时,上述touchesMoved方法被调用,但viewTouches为空。subView 不会覆盖任何事件处理方法(touchesBegan,touchesMoved等)。我希望视图的触摸计数包括其子视图中的所有触摸,但它似乎并没有那样工作。我在代码中做错了什么,或者这是它应该工作的方式,我不明白为什么?(如果是后者,为什么这样更好?)

谢谢!

0 投票
1 回答
333 浏览

macos - 在 IB 中的两个 nsbuttons 之间设置响应者链

我的窗口中有两个 nsbutton。我需要在这两者之间建立链接,如果用户按下标签焦点应该转到下一个按钮。

我知道响应者链是如何工作的。我的问题是如何在界面生成器中执行此操作。请帮助。

0 投票
2 回答
1158 浏览

cocoa - 防止 Escape 键关闭带有关闭框的 NSPanel

有谁知道防止转义键NSPanel在键窗口时关闭的最佳方法?我的面板是一个子窗口,我希望它的行为更像是窗口的半永久性部分,更像是一个抽屉,对于其中的文本控件,我想让 Escape 键取消编辑。

我最近在 Cocoa 文档中发现了更多关于 windows 和 Escape 键的信息。在 NSResponder 类参考中,它说“窗口向第一响应者cancelOperation:发送默认操作消息,然后消息从那里向上传播到响应者链”。cancelOperation:对于 , 似乎有所不同NSPanel,并且窗口在没有第一响应者cancelOperation:接到呼叫或 NSTextView 代表接到他们的doCommandBySelector:呼叫的情况下关闭。

考虑到我一直在做 OS X 工作,我对响应者链的进出的了解是可耻的。我在想我需要让keyDown:我的NSPanel子类表现得像一个普通的窗口。我尝试覆盖NSPaneland can catch keyDown:,将呼叫转发到NSWindow'skeyDown:而不是super,但没有任何变化,Escape 仍然关闭了窗口,没有消息给第一响应者。尝试这样做是否合理?

然后我尝试完全重新实现我的面板子类' keyDown:,让它这样做:

我认为这会让我的文本字段按照它通常期望的方式处理转义,也许如果没有文本字段是第一响应者,那么呼叫将结束。但是,我试过了,面板就像以前一样简单地关闭了。显然我没有在正确的水平上拦截事情。

有谁知道在低级按键事件和面板关闭之间运行的方法序列是什么,或者我需要覆盖什么来拦截它并确保cancelOperation:我的第一响应者?

0 投票
4 回答
16442 浏览

ios - 故事板编辑器中的“First Responder”和“Exit”框的用途是什么?

在 XCode IDE 中,MainStoryboard 编辑器的视图控制器底部有两个框:First Responder 和 Exit。

我知道 firstResponder 在代码中以编程方式是什么,但是在故事板编辑器中,我似乎无法做任何有用的事情。

我是否能够使用该区域的第一响应者以某种方式设置视图的第一响应者?我希望第一个文本字段在加载时处于活动状态,我尝试右键单击并拖动无济于事。我知道我可以在 viewDidLoad 方法中以编程方式设置它,但是这里有什么方法吗?

绿色出口有什么用?

急救人员(橙色)和出口(绿色)——它们的用途是什么?

0 投票
1 回答
166 浏览

ios - UIGesture 返回 UIImageView 而不是自定义视图

我在我的 rootview 中添加了一个自定义视图并添加了一个 UITapGesture。当调用 UITapGesture 代码的“sender.view”时,它不再由我的自定义 UIView 表示,而是“sender.view”的类型为 UIImageView。

因此,当 iOS 期待 UIView 时,向我的自定义视图发送消息真的很困难——我得到的警告是:“不兼容的指针类型将 UIView 发送到参数 CardView(我的自定义视图)。

我认为这与响应链有关;文档说 - “当 iOS 识别一个事件时,它会将事件传递给看起来与处理该事件最相关的初始对象,例如发生触摸的视图。” -关于 iOS 中的事件

这里的关键字是“似乎”——我如何告诉 iOS 我的自定义视图是应该处理手势的?

问题:如何让 sender.view 直接引用我的自定义视图?

下面是一些代码: