NSImageView拖放仍在窗口边界外工作

时间:2015-02-10 13:15:53

标签: objective-c drag-and-drop nsimageview

我有NSImageView拖放连接如下:

-(NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender{

    if ((NSDragOperationGeneric & [sender draggingSourceOperationMask])
        == NSDragOperationGeneric) {

        return NSDragOperationGeneric;

    } // end if

    // not a drag we can use
    return NSDragOperationNone;
}


-(NSDragOperation) draggingUpdated:(id<NSDraggingInfo>)sender{

    return NSDragOperationCopy;
}

-(void) draggingEnded:(id<NSDraggingInfo>)sender{

    NSPasteboard *pboard = [sender draggingPasteboard];

    if ( [[pboard types] containsObject:NSFilenamesPboardType] )
    {
        NSArray *files = [pboard
              propertyListForType:NSFilenamesPboardType];

        // Loop through all the files and process them.
        for( int i = 0; i < [files count]; i++ )
        {
             ....
        }
}

这一切都很棒。从Finder拖动fils时,如果在视图内部,则表示加号,并在外部时删除加号。它还表示要在一个小气泡中复制多少个文件。一切都很好。但是,如果我拖动视图并在应用程序外部加上消失,但在发布时它仍会将文件放入视图中。我怎么能阻止这种行为?

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决方案。

我没有使用draggingEnded,而是使用performDragOperation,而且一切正常。