2011-07-06 7 views
0

私はUITextViewを持っており、このテキストの特定の部分を選択してそのスタイルを変更したいと考えています。色を変更する、イタリック体または太字にする、フォントサイズを大きくする、フォントファミリを変更するなど。UITextView - 選択したテキストを変更する

ヘルプ

+0

やや重複しています。 http://stackoverflow.com/questions/3841108/uitextfield-make-text-bold – Legolas

+0

私は大胆に1ワードのような特定のテキストが必要UITextView全体! thnx –

答えて

0

はい。 iOS 5を待つ。私はiOS 5に関する情報の多くがまだNDAの下にあると思うので、ここではそれについて議論することはできない。

またはCoreTextで自分で開発してください。次のように

0

あなたはいくつかの代替のものを使用することができます -

  • まずscrollviewを取ると、あなたは太字フォントやchagne色にしたいと異なるスタイルで、ラベルまたは別のTextViewを追加し、scrollviewにサブビューとして追加します。
  • scrollviewにtextviewsが追加されている場合は、より見やすくするために既にtextviewをscrollviewに追加しているため、textviewのフレームをtextviewのテキストまたはラインの枠を大きく取る必要があります。
  • したがって、必要な数のテキストビューやラベル、画像を取り込んでからスクロールビューに追加するのは非常に簡単です。これはInterface Builderを使用して簡単に行うことができます。 scrollviewの完璧なコンテンツサイズを定義する必要があるのは、あなたが持っているサブビューに依存します。
0

shouldChangeTextInRangeを使用してください。これは、テキストを変更する位置を特定する範囲が必要なためです。
UITextViewでは、スタイルをtextView.attributedStringに保存できます。
解決策は、textViewのAttributed Stringを取得し、その中の目的のサブ文字列を変更またはスタイル付きのテキストに置き換えることです。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ 

    NSMutableAttributedString *textViewText = [[NSMutableAttributedString alloc]initWithAttributedString:textView.attributedText]; //gets textView style string 

    NSRange selectedTextRange = [textView selectedRange]; 
    NSString *selectedString = [textView textInRange:textView.selectedTextRange]; //our selected text 

    //lets say you always want to make selected text bold 
    UIFont *boldFont = [UIFont boldSystemFontOfSize:self.txtNote.font.pointSize]; 

    NSDictionary *boldAttr = [NSDictionary dictionaryWithObject:boldFont forKey:NSFontAttributeName]; 

    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:selectedString attributes:boldAttr]; //make attributed string of our selectedtext 

    [textViewText replaceCharactersInRange:range withAttributedString:attributedText]; // replace 
    textView.attributedText = textViewText; 

    return false; 
} 
関連する問題