0

私はテキストビューを持っていて、インターネットから入ってきたチャットを印刷していましたが、テキストビューがチャットをフォーマットするよりも多くの色が必要でした.

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);
}
4

2 に答える 2

0

スクロールを可能にするには、ScrollView の contentSize を ScrollView のフレームよりも大きくする必要があります。このプロパティを正しく設定すれば問題ありません。

于 2012-07-31T14:21:39.683 に答える
0

scrollView.contentSizeスクロール可能な領域の適切なサイズを設定する必要があります。

scrollView.contentSize = CGSizeMake(640, 320); // if you are in full screen and have two view one to other in horizontal

//垂直スクロールの場合は、行う必要があります

scrollView.contentSize = CGSizeMake(320, 640);

この例は、スクロール可能である場合に contentSize をビュー フレーム サイズよりも大きく設定した場合に、水平または垂直に一方向にスクロールするためのものです。

于 2012-07-31T14:20:38.950 に答える