[英]NSTextView Drag & Drop — Characters not visible after drop
我將NSTextView
子類NSTextView
以便可以刪除文件並將文件的字符串內容復制到視圖中(與將文件路徑拖放到視圖中的標准實現相反)。 該文本似乎正確刪除,但是刪除后不可見。 我可以看到光標已經移動,甚至可以將拖放的文本復制到視圖之外並粘貼到例如TextEdit中。 我嘗試在-performDragOperation:
方法的末尾添加[self setNeedsDisplay:YES]
,但是行為沒有改變。
這是我到目前為止編寫的代碼。 我想這不是實現此目標的最佳方法。 我是在可可中拖放實現的新手。
-(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:
存根-drawRect:
沒有實現。
刪除存根后,所有操作均按預期進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.