Я пытаюсь добавить изображение к тексту просмотра текстаприписываемые текст не отображается текст вложения в UITextView
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];
[self updateTextViewWithImage:image];
[picker dismissViewControllerAnimated:YES completion:nil];
}
-(void)updateTextViewWithImage:(UIImage *)image{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:_textView.text];
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = image;
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
[attributedString replaceCharactersInRange:NSMakeRange(2, 1) withAttributedString:attrStringWithImage];
_textView.attributedText = attributedString;
}
В Xcode отладчика, я вижу, что текст attachemnt правильно добавлен.
Перед вызовом метода:
Hello{
NSFont = "<UICTFont: 0x1004333f0> font-family: \".SFUIText\"; font-weight: normal; font-style: normal; font-size: 14.00pt";
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (\n), Lists (\n), BaseWritingDirection -1, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0";
}
После вызова метода:
He{
NSFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
NSOriginalFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
}{
NSAttachment = "<NSTextAttachment: 0x1702a2880>";
NSFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
NSOriginalFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
}lo{
NSFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
NSOriginalFont = "<UICTFont: 0x1004019c0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
}
Но даже после того, как метод вызывается, вид текста не показывает изображение в it.Also TextView является not nil. Я могу добавить изображение в виде подсмотра в текстовое представление, но я бы хотел использовать атрибутированную строку.
Редактировать: Я также попытался изменить размер изображения до 100x100, а также установить атрибутный текст в раскадровке. Но текст не добавляется в текст.
Странно, что изображение добавляется в атрибутный текст, если textView создается и добавляется как подвью.
-(void)updateTextViewWithImage:(UIImage *)image{
UIImage *img=[self imageWithImage:image scaledToSize:CGSizeMake(100, 100)];
UITextView *textView = [[UITextView alloc] initWithFrame:_textView.frame];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"before after"];
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = img;
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
[attributedString replaceCharactersInRange:NSMakeRange(6, 1) withAttributedString:attrStringWithImage];
textView.attributedText = attributedString;
_textView.attributedText=attributedString;
[_textView addSubview:textView];
}
Это изображение не добавлено, если textView создан в IB.
Edit:
Я проверил адрес вида текста, то же самое на viewDidAppear и после того, как я получаю изображение.
<UITextView: 0x7d085a00 - at viewWillAppear
<UITextView: 0x7d085a00; - at updateTextViewWithImage:
В этом изменении, я переписывался с _textView
-(void)updateTextViewWithImage:(UIImage *)image{
UIImage *img=[self imageWithImage:image scaledToSize:CGSizeMake(100, 100)];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"before after"];
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = img;
NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
[attributedString replaceCharactersInRange:NSMakeRange(6, 1) withAttributedString:attrStringWithImage];
_textView.attributedText=attributedString;
}
После того как я называю updateTextViewWithImage
, я проверил viewDebugger:
и TextView не обновляется связанная строка.
Не могли бы вы проверить адрес '_textView', это то же самое? Кроме того, с XCode Debug Hierarchy Tool (https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/debugging_with_xcode/chapters/special_debugging_workflows.html#//apple_ref/doc/uid/TP40015022-CH9-SW2) , не могли бы вы проверить, что все в порядке? Мне интересно, если вы не делаете ошибку, поскольку она работает, когда вы добавляете новый 'UITextView' выше, который может быть уже 2 textView один над другим, и вы обновляете тот, который находится под ним, который скрыт выше. – Larme
@ Larme, я обновил вопрос. –
@ Larme, спасибо за подсказку, я обнаружил, что текст textView переопределен в методе viewWillAppear. –