【问题标题】:PXListView drag and drop is not doing workingPXListView 拖放不起作用
【发布时间】:2013-02-02 08:27:50
【问题描述】:

我已经创建了 NSViewController 来管理 PXListView....委托与文件所有者连接...

这里一切都按预期工作..除了拖放...

在拖动时它没有进入拖动代理函数...并且在拖动时它不显示 + 符号(即拖动符号)...并且拖动单元格重新定位到其原始位置

#import "PXListView.h"

@interface ListViewController : NSViewController <PXListViewDelegate>
{
    IBOutlet  PXListView *listView;
    NSMutableArray *_listItems;

    int count;

}
- (void)addCell;

@end



- (BOOL)listView:(PXListView*)aListView writeCellsWithIndexes:(NSIndexSet*)rowIndexes toPasteboard:(NSPasteboard*)dragPasteboard
{
    // +++ Actually drag the items, not just dummy data.
    [dragPasteboard declareTypes: [NSArray arrayWithObjects: NSStringPboardType, nil] owner: self];
    [dragPasteboard setString: @"Just Testing" forType: NSStringPboardType];

    return YES;
}

- (NSDragOperation)listView:(PXListView*)aListView validateDrop:(id <NSDraggingInfo>)info proposedCell:(NSUInteger)row
      proposedDropHighlight:(PXListViewDropHighlight)dropHighlight;
{
    return NSDragOperationCopy;
}

- (BOOL)listView:(PXListView*)aListView acceptDrop:(id <NSDraggingInfo>)info row:   (NSUInteger)row dropHighlight:(PXListViewDropHighlight)dropHighlight
{
    NSLog(@"Accept Drop");

    ListViewThumbnailObject *temp = [_listItems objectAtIndex: [listView selectedCell]];
    [_listItems removeObjectAtIndex: [listView selectedCell]];
    [_listItems insertObject: temp atIndex: row];
    [listView reloadData];
    return YES;
}

它没有进入拖动相关的委托方法..

在“nib”文件中,委托与文件所有者连接...

谁能建议我如何解决这个问题?

谢谢, 穆图

【问题讨论】:

    标签: objective-c cocoa drag-and-drop nsscrollview


    【解决方案1】:

    为了能够接受拖放,您可能需要确保为您计划接受的所有拖动类型注册列表视图。尝试在列表视图控制器类的 awakeFromNib 方法中添加它:

    - (void)awakeFromNib {
        [listView registerForDraggedTypes:[NSArray
                   arrayWithObjects:NSStringPboardType, nil]];
    }
    

    请参阅Drag and Drop Programming Topics: Receiving Drag Operations 了解更多信息。

    请注意,我在这里的数组中使用了NSStringPboardType,因为这是您在listView:writeCellsWithIndexes:toPasteboard: 方法中声明的写入类型。您使用的确切类型数组将取决于您想要支持的类型以及您想要支持的拖动操作的类型(例如,您是否只想实现拖放以允许在单个列表视图中重新排序项目, 或者您是否希望允许将项目从 Finder 拖动到 Finder 或在您自己的应用程序的不同视图之间)。如果您描述了您希望支持的拖动操作类型,我可以提供有关您可能希望如何实现它们的更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2015-08-10
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多