首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将NSView移到所有NSViews的前面

如何将NSView移到所有NSViews的前面
EN

Stack Overflow用户
提问于 2010-05-20 18:24:34
回答 7查看 25.5K关注 0票数 39

我有一个超级视图,它有两个子视图。这些子视图是重叠的。

每当我从菜单中选择一个视图时,相应的视图应该成为前视图并处理操作。也就是说,它应该是最前面的子视图。

acceptsFirstResponder辞职,一切都很好。但是鼠标按下事件被发送到设置的最顶层的子视图。

问候你,Dhana

EN

Stack Overflow用户

发布于 2011-12-21 21:09:22

另一种方法是使用NSView的sortSubviewsUsingFunction:context:方法根据您的喜好重新排序兄弟视图的集合。例如,定义比较函数:

代码语言:javascript
运行
复制
static NSComparisonResult myCustomViewAboveSiblingViewsComparator( NSView * view1, NSView * view2, void * context )
{    
    if ([view1 isKindOfClass:[MyCustomView class]])    
        return NSOrderedDescending;    
    else if ([view2 isKindOfClass:[MyCustomView class]])    
        return NSOrderedAscending;    

    return NSOrderedSame;
}

然后,当您希望确保您的自定义视图高于所有同级视图时,请将此消息发送到自定义视图的superview:

代码语言:javascript
运行
复制
[[myCustomView superview] sortSubviewsUsingFunction:myCustomViewAboveSiblingViewsComparator context:NULL];

或者,您可以将此代码移动到superview本身,并将消息sortSubviewsUsingFunction:context:发送到self

票数 17
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2872840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档