Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 视图或控制器应该负责拖动处理吗?_Cocoa_Oop_Model View Controller_Nsview_Nsviewcontroller - Fatal编程技术网

Cocoa 视图或控制器应该负责拖动处理吗?

Cocoa 视图或控制器应该负责拖动处理吗?,cocoa,oop,model-view-controller,nsview,nsviewcontroller,Cocoa,Oop,Model View Controller,Nsview,Nsviewcontroller,通常情况下,拖动处理的主要责任属于哪里——在NSView中还是在NSViewController中 拖动操作挂钩都包含在NSView中,因此NSView似乎是一个自然的地方。此外,视图需要发挥一定的作用,因为视图知道事物的位置,因此它自然是阻力的终点专家 但拖动通常是关于文档间或进程间通信的,尤其是关于将文件从Finder拖动到文档中。拖动将导致对模型进行更改或添加。这是控制员的工作 最后,无论是在视图上还是在控制器上,我们通常都会添加一组方法来处理拖入过程,然后接收数据。人们是简单地将方法添加

通常情况下,拖动处理的主要责任属于哪里——在NSView中还是在NSViewController中

拖动操作挂钩都包含在NSView中,因此NSView似乎是一个自然的地方。此外,视图需要发挥一定的作用,因为视图知道事物的位置,因此它自然是阻力的终点专家

但拖动通常是关于文档间或进程间通信的,尤其是关于将文件从Finder拖动到文档中。拖动将导致对模型进行更改或添加。这是控制员的工作

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

NSView是拖动处理的“前线”,因为正如您所指出的,“视图知道东西在哪里,因此它自然是拖动将在哪里结束的专家。”,但我看到的模式是,就像按钮这样的简单视图一样,当视图接收到“用户意图”时,它会将其传递给控制器对象

简单的NSControl使用目标/动作范例来实现这一点,可以在IB中连接。这里的一个简单方法可能是为视图指定目标/动作,当拖动操作进展到触发动作的时间点时,视图可以这样做。视图需要传达给控制器的任何状态理论上都可以通过在动作的
sender
参数中传递给控制器的视图来访问

当然,目标/动作范例是相当有限的,但这里的要点是视图可以跟踪拖动,直到“用户意图单元”建立为止,它可以被分派到控制器进行处理。确切的机制将由每个个人所需行为的需要决定。

NSView是阻力处理的“前线”,因为正如您所指出的,“视图知道东西在哪里,因此它自然是阻力将在哪里结束的专家。”我不能代表每个人说话,但我看到的模式是,很像按钮这样的简单视图,当视图接收到“用户意图”时,它会将其传递给控制器对象

简单的NSControl使用目标/动作范例来实现这一点,可以在IB中连接。这里的一个简单方法可能是为视图指定目标/动作,当拖动操作进展到触发动作的时间点时,视图可以这样做。视图需要传达给控制器的任何状态理论上都可以通过在动作的
sender
参数中传递给控制器的视图来访问

当然,目标/动作范例是相当有限的,但这里的要点是视图可以跟踪拖动,直到“用户意图单元”建立为止,它可以被分派到控制器进行处理。确切的机制将取决于每个个体所需行为的需要