2015-12-16 3 views
6

Мне нужно поддерживать вставку изображений в UITextView. Если изображение скопировано в буфер обмена, опция «Paste», похоже, не появляется. Это происходит, когда в буфере обмена есть текст.Как включить UITextView для получения вставленных изображений

Это способ переопределить опцию paste в обычном UITextView. Но мне нужна помощь в том, как получить возможность, чтобы показать, чтобы начать с ...

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

я наткнулся на несколько взаимосвязанных вопросов, но они не были полезны для неопытных разработчиков, как я: How to get UIMenuController work for a custom view?, How to paste image from pasteboard on UITextView?

ответ

7

Я ответил на свой вопрос. Все, что вам нужно сделать, это есть UITextView сказать: «Я могу получить наклеенных изображения» путем переопределения этого метода UITextView:

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

Добро пожаловать.

+0

Ваш код верный, но мой вариант вставки не подходит после копирования изображения. Как это решить? –

+0

Вы не забыли установить UITextView как экземпляр пользовательского класса, созданного с помощью этого кода? –

+0

@MattKoala Спасибо, ваш ответ прекрасен. – Urmi

Смежные вопросы