私はテキストビューを持っていて、インターネットから入ってきたチャットを印刷していましたが、テキストビューがチャットをフォーマットするよりも多くの色が必要でした.
textview を scrollview に置き換え、viewdidload でビュークラスをアタッチしようとしました (うまくいったようです)。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_myconsoleview = [[ConsoleView alloc] initWithFrame:[self._scview bounds]];
[_myconsoleview setBackgroundColor: [UIColor yellowColor]];
[self._scview addSubview:_myconsoleview];
[self._scview setNeedsDisplay];
}
また、テキストがスクロールしませんでした(テキストをマウスでドラッグしてスクロールバーを探しました)。
したがって、このコアテキストプログラムの例では、スクロールが簡単だと言っています。カスタム ビュー (ConsoleView) にスクロール ビュー自体を継承させるだけです。だから私はこれを試して、今これを追加します:
@interface ConsoleView :UIScrollView<UIScrollViewDelegate>
まだスクロールしません。スクロールバーはありません。兆候はなく、これまでのところ、あらゆる種類のスクロールのiPadシミュレーターを使用しています。ConsoleView では、最終的に非常に洗練された何かをしたいと思っていますが、今のところ、単一の文字列を印刷しているだけです。しかし、追加するにつれてテキストが増えると、文字列が長くなります。
sendtext メソッドでこれを試しました。ボタンを押して、このテキストフィールドに入力したテキストをサーバーに送信すると、これがヒットします。
[myconsoleviewid addNewText:newText];
[_scview scrollRectToVisible:[_scview bounds] animated: TRUE];
[_scview setNeedsDisplay];
正直なところ、上記が機能すると主張できるかどうかはわかりませんが、何かが機能する可能性があると考えました。何か案は?私は約2か月前に開始したiosプログラミングにかなり慣れていませんが、これまでに何度も取り組んできました。Java や android では、スクロール コントロールにコンソールを追加するよりも、スクロールするコンソールのようになることの方がはるかに多いようです。しかし、IOS はよりトリッキーであることが証明されています。
マイク
編集。これは、ますます長くなる文字列を印刷することを想定している私の描画長方形です。そのコンソールビューで:
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0); CGMutablePathRef path = CGPathCreateMutable(); //1
CGPathAddRect(path, NULL, self.bounds );
CTFramesetterRef framesetter =
CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attString); //3
CTFrameRef frame =
CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, [attString length]), path, NULL);
CTFrameDraw(frame, context); //4
CFRelease(frame); //5
CFRelease(path);
CFRelease(framesetter);
}