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 からダウンロードできます。
これは予想される動作ですか、それともバグですか?