【发布时间】:2013-03-21 14:30:21
【问题描述】:
我有一个NSPopUpButton,甚至还有一个NSPopUpButton 的简单子类。
在我的子类中:
- (BOOL)acceptsFirstResponder { return YES; }
- (BOOL)refusesFirstResponder { return NO; }
现在很容易告诉窗口使按钮成为第一响应者,并且在启动时有效,但我需要这也发生在从 NSTextField 中跳出的 nextResponder 中。 一旦焦点在任何 NSTextField 上,它似乎永远无法移回弹出按钮。
我在这里缺少什么? 看起来应该很简单。
回答:firstResponder 不是在这里使用的东西。需要一个子类(正如我所怀疑的),并且只需要覆盖以下内容即可返回 YES:
- (BOOL)canBecomeKeyView { return YES; }(感谢彼得·霍西)
【问题讨论】:
-
你能给我们一个窗口中的控件列表以及每个控件的 nextResponder 设置什么?
-
您是否尝试过设置上一个视图的
nextKeyView? -
仅包含一个 NSPopUpButton 和一个 NSTextField。尝试在代码和 IB 中从一个到另一个设置 nextKeyView,没有效果。似乎只有包含窗口才能将 NSPopUpButton 设置为 firstResponder。很奇怪。
-
@uchuugaka:请注意,第一响应者和关键视图之间存在区别。有一个单独的
canBecomeKeyView方法。 -
啊哈!!
canBecomeKeyView {return YES;}在我的子类中成功了。请添加为答案,我会接受! firstResponder 不是我想要的方法。
标签: objective-c cocoa nstextfield first-responder nspopupbutton