gpt4 book ai didi

objective-c - NSTextView 拖放 -- 拖放后字符不可见

转载 作者:行者123 更新时间:2023-12-03 16:47:36 24 4
gpt4 key购买 nike

我对 NSTextView 进行了子类化,以便我可以删除文件并将文件的字符串内容复制到 View 中(与将文件路径删除到 View 中的标准实现相反)。文本似乎正确放置,但放置后不可见。我可以看到光标已移动,甚至可以将拖放的文本复制到 View 之外并粘贴到 TextEdit 等中。我尝试在 -performDragOperation: 方法末尾添加 [self setNeedsDisplay:YES] ,但行为没有改变。

这是我到目前为止编写的代码。我想这不是实现这一点的最佳方法。我是 cocoa 中拖放实现的新手。

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

NSPasteboard *pb = [sender draggingPasteboard];
NSDragOperation dragOperation = [sender draggingSourceOperationMask];

if ([[pb types] containsObject:NSFilenamesPboardType]) {
if (dragOperation & NSDragOperationCopy) {
return NSDragOperationCopy;
}
}
if ([[pb types] containsObject:NSPasteboardTypeString]) {
if (dragOperation & NSDragOperationCopy) {
return NSDragOperationCopy;
}
}

return NSDragOperationNone;

}


-(BOOL)performDragOperation:(id<NSDraggingInfo>)sender {

NSPasteboard *pb = [sender draggingPasteboard];

if ( [[pb types] containsObject:NSFilenamesPboardType] ) {
NSArray *filenames = [pb propertyListForType:NSFilenamesPboardType];

for (NSString *filename in filenames) {
NSStringEncoding encoding;
NSError * error;
NSString * fileContents = [NSString stringWithContentsOfFile:filename usedEncoding:&encoding error:&error];
if (error) {
// handle error
}
else {
[self setString:fileContents];
}
}

}

else if ( [[pb types] containsObject:NSPasteboardTypeString] ) {
NSString *draggedString = [pb stringForType:NSPasteboardTypeString];
[self setString:draggedString];
}

return YES;

}

最佳答案

我有一个没有实现的 -drawRect: stub 。

删除 stub 后,一切都按预期运行。

关于objective-c - NSTextView 拖放 -- 拖放后字符不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com