2015-12-16 16 views
6

Potrzebuję obsługi wklejania obrazów do UITextView. Po skopiowaniu obrazu do schowka opcja "Paste" wydaje się nie być wyświetlana. Ma to miejsce, gdy w schowku jest tekst.Jak włączyć UITextView, aby otrzymywać wklejone obrazy

W ten sposób można zastąpić opcję paste w niestandardowym UITextView. Ale potrzebuję pomocy, w jaki sposób dostać się opcja, aby pokazać się na początku ...

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

natknąłem się na kilku powiązanych pytań, ale nie były one pomocne dla niedoświadczonych deweloperów jak ja: How to get UIMenuController work for a custom view?, How to paste image from pasteboard on UITextView?

Odpowiedz

7

Odpowiedziałem na własne pytanie. Wszystko co musisz zrobić, to mieć UITextView powiedzieć „Mogę odbierać wklejone obrazy” nadrzędnymi tej metody UITextView:

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

Jesteś mile widziane.

+0

Twój kod jest poprawny, ale moja opcja wklejania nie jest dostępna po skopiowaniu obrazu. Jak rozwiązać ten problem? –

+0

Czy pamiętasz, aby ustawić UITextView jako instancję klasy niestandardowej utworzonej przy pomocy tego kodu? –

+0

@MattKoala Dzięki, że twoja odpowiedź jest idealna. – Urmi