Как сделать выбранное изображение в NSTextView?

Я работаю над приложением, которое выполняет некоторые математические вычисления и отправляет результаты (включая тексты и графики) в NSTextView.

Этот код прекрасно работает при выводе, но это проблема: я хочу, чтобы пользователь мог выбрать /copy-pate и перетащить полученные изображения в другие текстовые редакторы (например, Pages или Text Edit).
когда пользователь перетаскивает изображение из моего текстового представления, оно перетаскивается, но ничего не вставляется в место назначения:

  • (void) drawRect: (NSRect) dirtyRect {

    [super drawRect: dirtyRect];

    NSBezierPath * aPath =[NSBezierPath bezierPath];

    NSImage * anImage =[[NSImage alloc] initWithSize: NSMakeSize (200.0, 200.0)];

    [anImage lockFocus];

    // некоторые рисунки:

    NSColor* blue= [NSColor blueColor];
    
    [blue setStroke];
    
    aPath=[NSBezierPath bezierPath];
    
    [aPath setLineWidth:20];
    
    [aPath moveToPoint:NSMakePoint(20.0, 20.0)];
    
    [aPath lineToPoint:NSMakePoint(100.0, 100.0)];
    
    [aPath stroke];
    

    [anImage unlockFocus];

    //re-capture and change it to a bitmap
    

    Размер NSSize =[размер изображения];

    [anImage lockFocus];

    NSBitmapImageRep* rep = [[NSBitmapImageRep alloc] initWithFocusedViewRect:
                         NSMakeRect(0,0,size.width,size.height)];
    

    [anImage unlockFocus];

    NSData* jpgData= [rep representationUsingType:   NSJPEGFileType properties:nil ];
    

    NSImage * newImage =[[NSImage alloc] initWithData: jpgData];

    // добавляем приписанную строку только один раз. BOOL isDrownYet в шапке

    if (! isDrownYet) {

    NSTextAttachmentCell *attachmentCell1 = [[NSTextAttachmentCell alloc]   initImageCell:newImage];
    
    NSTextAttachment *attachment1 = [[NSTextAttachment alloc] init];
    
    [attachment1 setAttachmentCell: attachmentCell1 ];
    
    NSMutableAttributedString *attributedString1 = ( NSMutableAttributedString*)[ NSMutableAttributedString 
    

    attributetedStringWithAttachment: attachment1];

    [self.textStorage appendAttributedString:attributedString1];
    
    isDrownYet=YES;
    

    }}

0 ответов

Другие вопросы по тегам