gui*_*low 2 cocoa drag-and-drop objective-c nsview nsresponder
我有一个应用程序,其中有一个自定义视图,该视图派生自NSView。在此视图中,有几个自定义子视图,这些子视图也源自NSView。
我想实现一种拖放行为,该行为允许将URL拖放到视图上。一切都已经可以用于主视图了。
因此,实际上,我将不得不在子视图和父视图类上实现拖动行为处理程序。事实是,我不想将完整的处理代码复制到所有子视图中,以使它们也接受拖动事件。因此,我认为这是让他们将所有拖动事件转发到父视图的最佳方法。
这有可能吗?不知道我是否可以通过响应者链进行设置?
任何提示,高度赞赏!提前致谢。
我遇到了类似的问题,我希望在视图中放下任何东西,或者任何子视图都可以由视图来处理,但是调用从未到达那里。
经过研究后,我发现此答案最有帮助:https : //stackoverflow.com/a/7389711/327471
本质上,如果视图未注册为接收任何拖动事件,则应将信息自动传递到其父视图。因此,就我而言,我最终得到了这样的结果:
NSArray *subviews = [self.view subviews];
for (NSView *aSubview in subviews) {
[aSubview unregisterDraggedTypes];
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以比这更精确,并确保仅检查某种类型的子类或所需的任何参数。但是最终的关键是从拖动类型中注销问题子视图。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1359 次 |
| 最近记录: |