【问题标题】:How to make NSPopUpButton accept firstResponder status?如何让 NSPopUpButton 接受 firstResponder 状态?
【发布时间】: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


【解决方案1】:

在您的 NSPopUpButton 子类中,尝试改写 canBecomeKeyView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2020-12-30
    • 2020-07-20
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多