Agregar imágenes a UITextView

En mi aplicación, tengo una UITextView y un botón justo debajo de la vista de texto para insertar una foto en el UITextView mientras UITextView .

Mi requisito es que el usuario usuario pueda editar el texto dentro, e insertar imágenes cuando sea necesario.

Similar al propio UITextView la aplicación UITextView :

enter image description here

Puede agregar la vista de imagen como una subvista de UITextView .

Crea una imageView con imagen:

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

Editar:

Para evitar el uso superpuesto (Gracias @ 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]; 

Si lo agrega solo como una subvista, algunos textos pueden estar “detrás” de la imagen. Así que agrega el código que “dirá” el texto, ese área de la imagen es inaccesible:

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

solo agregue como una subvista de TextView como abajo …

  [yourTextView addSubview:yourImageView]; 

Mira esto, ios-5-rich-text-editing-series . En iOS 5, puede insertar imágenes y usar textos HTML. Puede que tengas que usar UIWebview y webkit.

También puede consultar con EGOTextView, que tiene muchas funciones de edición de texto enriquecido.

Crear la subclase de UITextView y anular este método

 - (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; } }