如何从可可的窗口控制器中获取当前的First Responder? [英] How to Get Current First Responder from Window Controller in Cocoa?
本文介绍了如何从可可的窗口控制器中获取当前的First Responder?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望在窗口中找到First Responder视图。为此,我想实现如下类别:
@implementation NSView (ViewExtensions)
- (NSView *)findFirstResponder
{
if ([self isFirstResponder]) {
return self;
}
for (NSView *subView in [self subviews]) {
NSView *firstResponder = [subView findFirstResponder];
if (firstResponder != nil) {
return firstResponder;
}
}
return nil;
}
@end
以上代码基于SO:Get the current first responder without using a private API上的此问题/答案。
问题可能在于NSResponder没有像UIResponder那样的isFirstResponder方法。NSResponder的等价物是什么?
如果按照上面的方法实现,我当然会收到调试消息:"‘NSView’可能不会响应‘isFirstResponder’"。
如何使findFirstResponder在可可中工作?
更多信息:稍后我想在我的窗口控制器中使用上述方法,如下所示:
NSArray *copiedObjects;
if ([[self window]contentView] == MyTableView) {
copiedObjects = [tableController selectedObjects];
}
if ([[self window]contentView] == MyOutlineView) {
copiedObjects = [treeController selectedFolders];
}
推荐答案
直接返回第一个响应者的-[NSWindow firstResponder]
有什么问题?
这篇关于如何从可可的窗口控制器中获取当前的First Responder?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文