A A*_*A A 9 cocoa nsview categories 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
Run Code Online (Sandbox Code Playgroud)
上面的代码基于SO上的这个问题/答案:在不使用私有API的情况下获取当前的第一响应者.
问题可能是,NSResponder没有像UIResponder那样的isFirstResponder方法.NSResponder的等价物是什么?
如果上面的方法是如上实现的,我当然得到调试消息:"'NSView'可能不响应'isFirstResponder'".
如何让findFirstResponder在Cocoa中工作?
更多信息:我后来想在我的窗口控制器中以某种方式使用上述方法:
NSArray *copiedObjects;
if ([[self window]contentView] == MyTableView) {
copiedObjects = [tableController selectedObjects];
}
if ([[self window]contentView] == MyOutlineView) {
copiedObjects = [treeController selectedFolders];
}
Run Code Online (Sandbox Code Playgroud)
Ken*_*ses 32
有什么问题-[NSWindow firstResponder],直接返回第一响应者?
| 归档时间: |
|
| 查看次数: |
9284 次 |
| 最近记录: |