NSView
A包含一个NSTableView
(在一个NSScrollView
),一个子NSView
B,并通过实现来监听鼠标事件-mouseDown/Dragged/Up:
。NSView
B没有实现这两种方法,所以原来NSResponder
的方法应该将相应的消息转发给它的下一个响应者(父视图)。
当鼠标在内部单击,从NSView
B拖动,并在除 之外的任何对象上释放时NSTableView
,整个拖动序列(向下/拖动/向上)正常发送到父视图。
但是,如果在 上释放鼠标NSTableView
,则-mouseUp:
消息永远不会发送到父视图。相反,它被 NSTableView 窃取。
这种行为可以通过继承NSView
B并实现-mouseUp:
消息来改变为正常行为,以便它简单地将事件传递给它的下一个响应者(正是原始 NSResponder 方法应该做的)。
在 OSX 10.7.4/Xcode 4.4 上观察到。可以从这里下载一个测试项目:http ://www.filefactory.com/file/41ung2am0aax/n/TestDragging_zip
这是预期的行为还是错误?