- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用新的 NSPasteboardWriting
API 支持使用 NSTableView
和 NSCollectionView
进行多项目拖动。在我的真实应用程序中,我可以为 TableView 进行拖动,但不能为 Collection View 进行拖动(NSFilePromiseProviderDelegate
方法永远不会被调用)。当我尝试从头开始构建演示应用程序时,我能够使用 NSTableView
重现此内容。
我已经在 DragDelegate
的两个方法中设置了断点,但都没有被调用。不过,-tableView:pasteboardWriterForRow:
确实被调用了。当我拖动到应用程序外部时,我看到该行的图像附加到光标,但就 Finder 而言,粘贴板上没有文件。没有选项可以拖放到 Dock 或 Finder 窗口上。
CollectionController
的实例被设置为我的表格 View 的dataSource
。它有一个列,其文本标签绑定(bind)到所表示的对象(因为它只是一个 NSString
)。我在 Mojave 10.14.0 上运行 Xcode 10.0。以下是我的类(class):
@interface CollectionController : NSObject <NSTableViewDataSource>
@property (strong) id<NSFilePromiseProviderDelegate> dragDelegate;
@end
@implementation CollectionController
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 1;
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row
{
return @"Test string";
}
- (id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
self.dragDelegate = [[DragDelegate alloc] init];
return [[NSFilePromiseProvider alloc] initWithFileType:@"public.text"
delegate:self.dragDelegate];
return prov;
}
@end
@interface DragDelegate: NSObject <NSFilePromiseProviderDelegate>
@end
@implementation DragDelegate
- (NSString *)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider
fileNameForType:(NSString *)fileType
{
return @"file.txt";
}
- (void)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider
writePromiseToURL:(NSURL *)url
completionHandler:(void (^)(NSError * _Nullable))completionHandler
{
NSData *data = [@"test file contents" dataUsingEncoding:NSUTF8StringEncoding];
[data writeToURL:url atomically:YES];
completionHandler(nil);
}
@end
最佳答案
设置默认的拖动操作
- (void)setDraggingSourceOperationMask:(NSDragOperation)mask forLocal:(BOOL)isLocal;
关于macos - 如何使用 NSFilePromiseProvider 写入粘贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52998215/
我正在尝试使用新的 NSPasteboardWriting API 支持使用 NSTableView 和 NSCollectionView 进行多项目拖动。在我的真实应用程序中,我可以为 TableV
我是一名优秀的程序员,十分优秀!