Sie werden eine der textView.layoutManager
‚s Methoden verwenden möchten.
invalidateDisplayCharacterRange:
imageForBounds:textContainer:characterIndex:
wieder aufgerufen werden.
attachmentBoundsForTextContainer:[...]Index:
wird nicht erneut aufgerufen werden.
- Gut, wenn die
image
mit einer anderen der gleichen Größe geändert wurde.
invalidateLayoutForCharacterRange:actualCharacterRange:
imageForBounds:textContainer:characterIndex:
wieder aufgerufen werden.
attachmentBoundsForTextContainer:[...]Index:
wird erneut aufgerufen.
- Gut, wenn die
image
mit einer anderen anderen Größe geändert wurde.
Wenn Sie nur eine einzelne Anlage aktualisieren möchten, können Sie diese Hilfsmethode finde ich schrieb hilfreich:
- (NSRange)rangeOfAttachment:(NSTextAttachment *)attachment {
__block NSRange ret;
[self.textStorage enumerateAttribute:NSAttachmentAttributeName
inRange:NSMakeRange(0, self.textStorage.length)
options:0
usingBlock:^(id value, NSRange range, BOOL *stop) {
if (attachment == value) {
ret = range;
*stop = YES;
}
}];
return ret;
}
Sie können die resultierende NSRange
dieser Methode auf das erste Argument übergeben von entweder diese Methoden. Für das actualCharacterRange:
Argument der zweiten Methode habe ich NULL
ohne irgendwelche Probleme übergeben.
Vielen Dank .Es ist mein Problem gelöst zu verwenden. – jhondge