0
UITextView
の中にNSMutableAttributedString
というテキストの書式設定を許可しています。書式設定の例は、太字、イタリック、フォントの変更などです。フォントアトリビュートを変更した後、NSMutableAttributedStringを使用してUITextviewの位置を維持する方法
属性の変更は正しく反映されています。しかし、setAttributedText
とinvalidateDisplayForCharacterRange
の後、私のUITextView
はテキストの最下部までスクロールしてしまいます。 UITextViewの位置を変更せずにテキストの属性を置き換えるにはどうすればよいですか?
CODE:
- (void)placeCursorAfterFormatting
{
self.mytextview.selectedRange=currentRangeForFormatting;
}
- (IBAction)boldclicked:(UIButton *)sender {
currentRangeForFormatting = [self.mytextview selectedRange];
NSMutableAttributedString *atstr = [[[self.mytextview.attributedText mutableCopy] attributedSubstringFromRange:currentRangeForFormatting] mutableCopy];
[atstr enumerateAttribute:NSFontAttributeName inRange:(NSRange){0,[atstr length]} options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:^(id value, NSRange range, BOOL *stop) {
[atstr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"AvenirNext-Bold" size:18] range:range];
}];
NSMutableAttributedString *atstrnew = [self.mytextview.attributedText mutableCopy];
[atstrnew replaceCharactersInRange:currentRangeForFormatting withAttributedString:atstr];
[self.mytextview setAttributedText:atstrnew];
[self.mytextview.layoutManager invalidateDisplayForCharacterRange:currentRangeForFormatting];
[self performSelector:@selector(placeCursorAfterFormatting) withObject:nil afterDelay:0.1];
}
完璧に働いていたこと、ありがとうございました! –