2011-10-03 69 views
0

我想實現從NSOutlineView拖動,雖然拖動開始OK它永遠不會被另一個應用程序接受。相關的代碼是:從NSOutlineView拖動永不接受

- (BOOL) outlineView:(NSOutlineView*)pOutlineView writeItems:(NSArray*)pItems toPasteboard:(NSPasteboard*)pBoard 
{ 
    CItem* theItem = [pItems objectAtIndex:0]; 
    BOOL canDrag = ([theItem subItems] == 0); 
    if (canDrag) { 
     [pBoard clearContents]; 
     [pBoard writeObjects:[NSArray arrayWithObject:[theItem name]]]; 
    } 

    return canDrag; 
} 

[theItem name]返回一個NSString *。在某些時候,我會希望將更多內容添加到粘貼板內容中,但是直到我可以使用簡單的字符串工作時,似乎沒有太多意義。

拖動看起來不錯,但接收器在懸停時不顯示任何突出顯示,並且釋放時拖動圖像「飛回」。

任何幫助感激地收到!

牧師安迪

回答

1

原來,draggingSourceOperationMaskForLocal:絕不會爲NSOutlineView(或NSTableView的可能)的委託,使拖動操作是絕不允許。子類化NSOutlineView只是爲了覆蓋這個方法修復了一切。