gpt4 book ai didi

cocoa - 应该由 View 还是 Controller 负责拖动处理?

转载 作者:行者123 更新时间:2023-12-03 17:13:18 25 4
gpt4 key购买 nike

通常,拖动处理的主要责任正确地属于哪里——在 NSView 中还是在 NSViewController 中。

拖动操作钩子(Hook)都包含在NSView中,所以看起来NSView是天然的地方。此外, View 需要扮演某些角色,因为 View 知道事物在哪里,所以它自然是阻力应该结束的专家。

但是拖动通常是关于文档间或进程间通信 - 最具体地说,是将文件从 Finder 拖动到文档中。拖动必然会导致模型发生更改或添加。这就是 Controller 的工作。

最后,无论我们在 View 还是 Controller 上,我们通常都会添加一堆方法来处理拖入过程,然后接收数据。人们是否简单地将方法添加到 View 或 Controller ,或者将它们转发到策略对象?

最佳答案

NSView 是拖动处理的“前线”,因为正如您所指出的,“ View 知道事物在哪里,因此它自然是拖动应该结束的地方的专家。”我不能代表所有人,但我看到的模式是,就像按钮这样的简单 View 一样,当 View 接收到“用户意图”时,它会将其传递给 Controller ​​对象。

简单的 NSControl 使用目标/操作范例来完成此操作,可以将其连接到 IB 中。这里的一种简单方法可能是为 View 指定目标/操作,当拖动操作进行到触发操作的时间点时, View 可以执行此操作。理论上, View 需要传达给 Controller 的任何状态都可以通过在操作的 sender 参数中将 View 传递给 Controller ​​来访问。

当然,目标/操作范例是相当有限的,但这里的要点是 View 可以跟踪拖动,直到建立“用户意图单元”为止,它可以被分派(dispatch)到 Controller 进行处理。确切的机制将取决于每个人期望行为的需求。

关于cocoa - 应该由 View 还是 Controller 负责拖动处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858228/

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