1


私のアプリケーションでは、いくつかのファイルのリストと 1 つの WebView を持つ 1 つの NSOutlineView があり、
ユーザーは任意のアイテムを Outline ビューから WebView にドラッグできます。その上で、データベース トランザクションを処理することを想定しています。

Outline ビューでは、次のメソッドを実装しました。

- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard{
    [self log:@"write Items”];
    // Some other code to prepare the Write Item, 

}
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView validateDrop:(id < NSDraggingInfo >)info proposedItem:(id)item proposedChildIndex:(NSInteger)index{

}

- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id < NSDraggingInfo >)info item:(id)item childIndex:(NSInteger)index{

}

WebView 側では、次のメソッドを実装しました。

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
    NSPasteboard *pboard;
    NSDragOperation sourceDragMask;

    [self log:@"Inside draggingEntered”];
return NSDragOperationEvery;  
}

- (BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender{

}
- (BOOL)performDragOperation:(id < NSDraggingInfo >)sender{

}

Outline ビューから WebView に要素をドラッグすると、Outline ビューの writeItem が呼び出さ
れ、Webview では DragEnter がどこから呼び出されているかがわかりました。ドラッグ操作 NONE を返すのではなく、NSDragoperationEvery を返します。

問題は、メソッド、prepareForDragOperation および PerformDragOperation を取得していないことです。

誰でも私を助けてくれませんか、
よろしく
ローハン

4

1 に答える 1

2

こんにちはみんな
それを見てくれてありがとう、それはオーバーライドすることによって解決されました

- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender{
    [self log:@"Inside Dragging updated"];
    return NSDragOperationEvery;
}

ドキュメントではオプションとして言及されていましたが、実装されていない場合は、dragEnterメソッドからの戻り値を受け取ります。

おそらく私自身のデータ型の場合、WebViewメソッドからNONEを取得し、上書きすると機能するはずです。
よろしくローハン

于 2011-04-08T11:05:07.453 に答える