Objective c “如何制定控制措施”;tabable“;当从Cocoa应用程序中的插件加载时?

Objective c “如何制定控制措施”;tabable“;当从Cocoa应用程序中的插件加载时?,objective-c,cocoa,plugins,tab-ordering,Objective C,Cocoa,Plugins,Tab Ordering,我有一个在插件中加载的应用程序,插件有自己的UI。 在我的AppDelegate中有一个名为ContainerView的IBOutlet。 加载插件时,它会将自己的视图(存储在插件包中的xib中)放入容器视图中,就像这样 [ContainerView addSubview:viewFromPlugin] 加载视图时,一切正常,但当我按tab键时,唯一获得焦点的控件是ContainerView外部的控件,其中没有一个控件获得焦点。 我尝试将容器视图设置为initialFirstResponder,

我有一个在插件中加载的应用程序,插件有自己的UI。 在我的AppDelegate中有一个名为ContainerView的IBOutlet。 加载插件时,它会将自己的视图(存储在插件包中的xib中)放入容器视图中,就像这样
[ContainerView addSubview:viewFromPlugin]

加载视图时,一切正常,但当我按tab键时,唯一获得焦点的控件是ContainerView外部的控件,其中没有一个控件获得焦点。
我尝试将容器视图设置为initialFirstResponder,并尝试将nextKeyView从选项卡顺序中的最后一个按钮连接到ContainerView


谢谢。

您是否尝试在ContainerView上调用becomeFirstResponder方法

UIView类从UIResponder继承

我尝试将容器视图设置为initialFirstResponder,并尝试将nextKeyView从选项卡顺序中的最后一个按钮连接到ContainerView

这就是你想做的吗?是否将容器视图设置为关键视图?听起来不像是这样;听起来您希望插件视图(或其中的视图)成为关键视图


我相信您会想要设置容器视图的
nextKeyView
以及它之前的视图,或者覆盖容器视图的
nextValidKeyView
方法,可能两者都需要。您还可以尝试将上一个视图的
nextKeyView
直接设置为插件视图的
nextValidKeyView
,完全跳过容器视图。

提问者询问的是Cocoa,而不是Cocoa Touch。请注意,他询问了如何在视图之间实现选项卡,并提到了
nextKeyView
属性,而只有NSViews具有该属性。不需要显式地处理制表符;Cocoa会为你做这件事,所以发送这样的信息是不必要的。即使是这样,在Cocoa中向响应者发送
becomeFirstResponder
消息也是错误的;你告诉窗口为你做这件事。我能够覆盖ContainerView的nextKeyView,并让它进入插件视图的选项卡。为了使其脱离插件视图,我对上一个视图进行了子类化,并再次覆盖nextKeyView,使其脱离插件视图(使用一系列superview调用)。这是可行的,但似乎有点太老套了。有什么想法吗?实际上,真正的解决办法是在Interface Builder中单击一个小复选框,上面写着“自动重新计算视图循环”