gpt4 book ai didi

cocoa - 如何从 Cocoa 中的窗口 Controller 获取当前的第一响应者?

转载 作者:行者123 更新时间:2023-12-03 16:04:59 25 4
gpt4 key购买 nike

我想在窗口中找到第一个响应者 View 。为此,我想实现一个这样的类别:

    @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

上面的代码基于以下问题/答案:Get the current first responder without using a private API .

问题可能是 NSResponder 没有像 UIResponder 那样的 isFirstResponder 方法。 NSResponder 的等效项是什么?

如果按照上面的方法实现,我当然会收到调试消息:“'NSView'可能不会响应'isFirstResponder'”。

如何让 findFirstResponder 在 Cocoa 中工作?

更多信息:我稍后想在我的窗口 Controller 中以某种方式使用上述方法,例如:

        NSArray *copiedObjects;
if ([[self window]contentView] == MyTableView) {
copiedObjects = [tableController selectedObjects];
}
if ([[self window]contentView] == MyOutlineView) {
copiedObjects = [treeController selectedFolders];
}

最佳答案

直接返回第一响应者的-[NSWindow firstResponder]有什么问题吗?

关于cocoa - 如何从 Cocoa 中的窗口 Controller 获取当前的第一响应者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com