Добавление изображений в UITextView

В моем приложении у меня есть UITextView и кнопка чуть ниже текстового представления, чтобы вставить фотографию в UITextView во время редактирования.

Мое требование состоит в том, что пользователь может редактировать текст внутри и вставлять изображения, когда это необходимо.

Подобно собственному UITextView приложения UITextView :

введите описание изображения здесь

Вы можете добавить представление изображения в виде подвид UITextView .

Создайте изображение с изображением:

 UIImageView *imageView = [[UIImageView alloc] initWithImage:yourImage]; [imageView setFrame:yourFrame]; [yourTextView addSubview:imageView]; 

Редактировать:

Чтобы избежать перекрытия использования (Спасибо @chris):

 CGRect aRect = CGRectMake(156, 8, 16, 16); [imageView setFrame:aRect]; UIBezierPath *exclusionPath = [UIBezierPath bezierPathWithRect:CGRectMake(CGRectGetMinX(imageView.frame), CGRectGetMinY(imageView.frame), CGRectGetWidth(yourTextView.frame), CGRectGetHeight(imageView.frame))]; yourTextView.textContainer.exclusionPaths = @[exclusionPath]; [yourTextView addSubview:imageView]; 

Если вы добавите его только как подвью, некоторый текст может быть «позади» изображения. Поэтому добавьте код, который «скажет» текст, эта область изображения недоступна:

 UIBezierPath *exclusionPath = [UIBezierPath bezierPathWithRect:CGRectMake(CGRectGetMinX(imageView.frame), CGRectGetMinY(imageView.frame), CGRectGetWidth(imageView.frame), CGRectGetHeight(imageView.frame))]; textView.textContainer.exclusionPaths = @[exclusionPath]; 

просто добавьте в качестве подсмотра TextView, например, ниже.

  [yourTextView addSubview:yourImageView]; 

Посмотрите, серия ios-5-rich-text-editing . В iOS 5 вы можете вставлять изображения и использовать HTML-тексты. Возможно, вам придется использовать UIWebview и webkit.

Вы также можете проверить с помощью EGOTextView, который имеет множество функций редактирования текста.

Создайте подclass UITextView и переопределите этот метод

 - (void)paste:(id)sender { NSData *data = [[UIPasteboard generalPasteboard] dataForPasteboardType:@"public.png"]; if (data) { NSMutableAttributedString *attributedString = [[self attributedText] mutableCopy]; NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init]; textAttachment.image = [UIImage imageWithData:data scale:5]; NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment]; [attributedString replaceCharactersInRange:self.selectedRange withAttributedString:attrStringWithImage]; self.attributedText = attributedString; } else { UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard]; NSAttributedString *text = [[NSAttributedString alloc] initWithString:pasteBoard.string]; NSMutableAttributedString *attributedString = [self.attributedText mutableCopy]; [attributedString replaceCharactersInRange:self.selectedRange withAttributedString:text]; self.attributedText = attributedString; } } 
  • UILongPressGestureRecognizer вызывается дважды при нажатии
  • программный доступ к кнопкам громкости iPhone
  • как отобразить тестовый баннер IAd в симуляторе
  • захват себя в этом блоке, вероятно, приведет к циклу сохранения
  • iPhone - UILabel, содержащий текст с несколькими шрифтами одновременно
  • Возвратитесь к поведению приложения после разговора по телефону в собственном коде, чем UIWebView
  • Несоответствие UUID обнаружено в загруженной библиотеке
  • Можно ли изменить цвет фона UIButtons?
  • Как я смогу удалить объекты из NSMutableArray?
  • Сохранить фотографии в пользовательский альбом в iPhones Photo Library
  • NSMutableArray addObject не влияет на счет?
  • Давайте будем гением компьютера.