ページ

2007年8月30日木曜日

draggingSourceOperationMaskForLocal:

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

NSView#dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag
を使って同一ウィンドウと他アプリ両方をサポートする D&Dを検証中。
その課程で分かったことをメモ。

下記メソッドを実装しておくと、ドラッグ中に呼び出される。

NSObject(NSDraggingSource)#draggingSourceOperationMaskForLocal:

このメソッドで渡ってくる (BOOL)flag はローカルかどうか(?)を表すのではなく、NSObject(NSDraggingDestination)のメソッドが実装されているかどうかによって YES/NOが返されることが分かった。これらのメソッドが実装されている、すなわちD&Dを受け付ける場合は flag==YES、となり実装していない場合は flag==NO が返る。