4

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 からダウンロードできます。

これは予想される動作ですか、それともバグですか?

4

0 に答える 0