我的 Cocoa 应用程序中有一个表单,其中包含我希望通过键盘控制的 NSSegmentedControl。然而,NSSegmentedControl 似乎很不愿意成为第一响应者。
将窗口的初始第一响应者设置为分段控件没有任何作用——当窗口第一次加载时,它将没有键盘焦点。如果我像这样手动设置第一响应者,它确实会获得焦点,但是:
[segmentedControl.window makeFirstResponder: segmentedControl];
如果表单的唯一部分是分段控件,那将可以正常工作。如果我添加另一个字段(例如,一个 NSTextField),并将分段控件的 nextResponder 设置为该字段,则分段控件将永远不会成为第一响应者。焦点将立即转到文本字段,按 Tab 键切换回分段控件不起作用。
我试过继承 NSSegmentedControl 并覆盖 AcceptFirstResponder、becomeFirstResponder 等,但无济于事。唯一有区别的是resignFirstResponder——如果我从那个方法返回NO,那么分段控件确实会保持焦点,但显然我不希望它一直保持焦点。
关于如何让控件表现得像普通响应者的任何想法?