2015-12-16 10 views
6

Ich muss das Einfügen von Bildern in eine UITextView unterstützen. Wenn ein Bild in die Zwischenablage kopiert wird, scheint die Option "Paste" nicht zu erscheinen. Es tut wenn Text in der Zwischenablage ist.So aktivieren Sie UITextView, um eingefügte Bilder zu erhalten

So überschreiben Sie die paste Option in einem benutzerdefinierten UITextView. Aber ich brauche Hilfe, wie die Möglichkeit zu bekommen zu zeigen, bis zu beginnen ...

// This gets called when user presses menu "Paste" option 
- (void)paste:(id)sender{ 

    UIImage *image = [UIPasteboard generalPasteboard].image; 

    if (image) { 
     NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init]; 
     textAttachment.image = image; 
     NSAttributedString *imageString = [NSAttributedString attributedStringWithAttachment:textAttachment]; 
     self.attributedText = imageString; 
    } else { 
     // Call the normal paste action 
     [super paste:sender]; 
    } 
} 

stieß ich auf ein paar ähnliche Fragen, aber sie waren nicht hilfreich für einen unerfahrenen Entwickler wie mich: How to get UIMenuController work for a custom view?, How to paste image from pasteboard on UITextView?

Antwort

7

Ich beantwortete meine eigene Frage. Alles, was Sie tun müssen, ist der UITextView sagt Methode durch das Überschreiben dieser UITextView „klebt ich Bilder empfangen kann“:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{ 
    if (action == @selector(paste:) && [UIPasteboard generalPasteboard].image) 
     return YES; 
    else 
     return [super canPerformAction:action withSender:sender]; 
} 

Nichts zu danken.

+0

Ihr Code ist korrekt, aber meine Paste-Option kommt nicht, nachdem ich ein Bild kopiert habe. Wie löst man das? –

+0

Haben Sie daran gedacht, UITextView als eine Instanz der benutzerdefinierten Klasse festzulegen, die Sie mit diesem Code erstellt haben? –

+0

@MattKoala Danke deine Antwort ist perfekt. – Urmi