Objective c 删除/插入视图后NSResponder链断开

Objective c 删除/插入视图后NSResponder链断开,objective-c,macos,cocoa,appkit,Objective C,Macos,Cocoa,Appkit,似乎当我从NSViewController主视图中删除子视图时,响应器链会被修改,新视图将永远不会收到第一个响应器 视图控制器位于popover内。顶部有搜索字段,下面是自定义视图(搜索结果)。当我显示popover时,我可以使用tab键转到自定义视图。但若我搜索一些短语,搜索结果就会改变,标签也就不起作用了 知道有没有办法“修复”响应者链吗?迈克·阿卜杜拉的回答 在浏览NSPopover时,有一个发现让我有点吃惊:AppKit为popover在幕后创建的NSWindow关闭了autoreca

似乎当我从NSViewController主视图中删除子视图时,响应器链会被修改,新视图将永远不会收到第一个响应器

视图控制器位于popover内。顶部有搜索字段,下面是自定义视图(搜索结果)。当我显示popover时,我可以使用tab键转到自定义视图。但若我搜索一些短语,搜索结果就会改变,标签也就不起作用了


知道有没有办法“修复”响应者链吗?

迈克·阿卜杜拉的回答

在浏览NSPopover时,有一个发现让我有点吃惊:AppKit为popover在幕后创建的NSWindow关闭了autorecalculatesKeyViewLoop。如果动态更改popover的内容或布局,可能会产生一些奇怪的结果,因为AppKit不会考虑这些更改

(如果需要快速解释,“关键点视图”循环定义了当您点击tab键时发生的情况,该键控制焦点移动到哪个位置)

由于我们不拥有讨论中的窗口,我有点犹豫是否打开autorecalculatesKeyViewLoop。相反,在进行更改后,在窗口上调用RecreacteKeyViewLoop通常非常简单


你需要更具体地说明你在做什么,因为显然很多应用程序动态地删除和添加视图,而响应程序链没有任何问题。你是指响应程序链(
nextResponder
)还是键视图循环/选项卡顺序(
nextKeyView
)?@Willeke我的意思是选项卡循环顺序是的。我在下面有搜索字段和一些自定义视图,当我更改搜索阶段时,我会删除下面的视图,之后该选项卡就不起作用了。谷歌搜索“nspover key view loop”@Wilkeke谢谢,第一个结果看起来像是发生了什么:默认情况下,popover中的autorecalculatesKeyViewLoop为false。你能发布一个答案让我接受吗?5年后,这个解决方案
RecreacteKeyViewLoop
是我唯一能让containerView托管的NSView中的NSTextFields在交换时激活并正常工作的方法。