2011-08-09 34 views
1

我想使用NSTableView而不使用the NSTableViewDataSource Methods,但就像普通视图一样。 draggingEntered:draggingExited:被调用,但是当我返回NSDragOperationCopy时,我看不到绿色加鼠标指针,并且performDragOperation:未被调用。NSTableView可以处理普通的拖放方法吗?

我子类的NSTableView的这些方法:

- (void)awakeFromNib 
{ 
    [self registerForDraggedTypes: [NSArray arrayWithObject: NSFilenamesPboardType]]; 
} 

- (NSDragOperation)draggingEntered: (id <NSDraggingInfo>)sender 
{ 
    NSLog(@"draggingEntered"); //Gets called 
    return NSDragOperationCopy; 
} 

- (void)draggingExited: (id <NSDraggingInfo>)sender 
{ 
    NSLog(@"draggingExited"); //Gets called 
} 

- (BOOL)performDragOperation: (id <NSDraggingInfo>)sender 
{ 
    NSLog(@"performDragOperation"); //Doesn't get called 
    return YES; 
} 

回答

0

文档指出:符合NSDraggingDestination和NSDraggingSource协议,所以是应该用手正常拖动和下降。

您可以尝试使用nsview中的-registerForDraggedTypes:方法。

+0

我试过了,否则'draggingEntered:'和'draggingExited:'不会被调用。 – Jim893