2015-12-16 25 views
6

Devo supportare incollare immagini in un UITextView. Con un'immagine copiata negli appunti, l'opzione "Paste" non sembra apparire. Funziona quando c'è un testo negli Appunti.Come abilitare UITextView per ricevere le immagini incollate

Ecco come sovrascrivere l'opzione paste in una personalizzata UITextView. Ma ho bisogno di aiuto su come ottenere la possibilità di presentarsi per cominciare ...

// 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]; 
    } 
} 

mi sono imbattuto in un paio di questioni connesse, ma non erano utili per uno sviluppatore inesperto come me: How to get UIMenuController work for a custom view?, How to paste image from pasteboard on UITextView?

risposta

7

Ho risposto alla mia domanda. Tutto quello che dovete fare è avere l'UITextView dire "posso ricevere immagini incollate" mediante l'override di questo metodo UITextView:

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

Sei il benvenuto.

+0

Il codice è corretto, ma l'opzione Incolla non viene dopo aver copiato un'immagine. Come risolvere questo? –

+0

Ti sei ricordato di impostare UITextView come un'istanza della classe personalizzata che hai creato con questo codice? –

+0

@MattKoala Grazie la tua risposta è perfetta. – Urmi