よくあるような、タイプライター風に一文字づつ表示していくようなUITextViewが必要になったのですが、探してみてもなさそうな感じだったのでシンプルに書いてみました。

Skitched 20120731 113831

UITextViewのサブクラスとして実装してあります。

表示する文字列や文字間隔、またTextViewをタップして最後まで一括で表示する等の初期設定をします。


    // self.typeWriterTextView = [[TypeWriterTextView alloc] init];
    self.typeWriterTextView.typeText = @"タイプライター的に表示したいテキストを設定";
    self.typeWriterTextView.typeCharactersPerSec = 24;// 1秒間に表示する文字数の設定(デフォルト18)
    self.typeWriterTextView.typeWriterDelegate = self;// delegate
    self.typeWriterTextView.userInteractionEnabled = YES;// TextViewをタップで全部表示できるようにする

実際にタイプライター風に表示をするには[self.typeWriterTextView startTypeWriterAnimation];を呼び出すと表示が開始します。
止める場合は stopTypeWriterAnimationで、止める+消す場合はclearTypeWriterという感じで単純な作りです。


- (IBAction)startButton:(id)sender {
    [self.typeWriterTextView startTypeWriterAnimation];
}

- (IBAction)stopButton:(id)sender {
    [self.typeWriterTextView stopTypeWriterAnimation];
}

- (IBAction)clearButton:(id)sender {
    [self.typeWriterTextView clearTypeWriter];
}

delegateでselfを渡して置くと、typeTextの文字が全部表示し終わった時に下記のメソッドが呼ばれるように実装できます。

- (void)completeTypingText:(TypeWriterTextView *)typeWriterTextView;

タイプライター表示の中身的にも単純にNSTimerで回してるだけなので、ソース見たほうが理解が楽な気します。

Post Navigation