0

現在、入力ストリームからデータを受け取るアプリケーションを作成しています。このデータはNSStringポインタ出力に設定されます。NSTextField現在、出力は通常のウィンドウにしか表示できません。私の現在のコードでは、イベント hasBytesAvailable が true になった場合にのみ、これらの文字列を表示できます。hasBytesAvailable がストリームからデータを返すことができるたびに、NSTextField完全に置き換えられます。NSTextViewオブジェクトを適切に使用できないようです。NSTextViewhasBytesAvailable イベントが実行されてから情報が返されるので、文字列データを表示するように設定したい。上にスクロールして、送信されているすべての情報を確認できるようにしたいと考えています。

これに関連して私が考えることができる最良の例は、私のアプリケーションがデータを受け入れるクライアントになるチャットサーバー/クライアントですが、それはすべてNSTextViewウィンドウに保存されます。

ありがとうございました

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {

    switch (streamEvent) {

        case NSStreamEventOpenCompleted:
            NSLog(@"Stream opened");
            break;
        case NSStreamEventHasSpaceAvailable:
            NSLog(@"Has space");
            break;

        case NSStreamEventHasBytesAvailable:

            if (theStream == inputStream) {

                uint8_t buffer[10000];
                long len;

                while ([inputStream hasBytesAvailable]) {
                    len = [inputStream read:buffer maxLength:sizeof(buffer)];
                    if (len > 0) {

                        NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
                        NSLog(@"Has Bytes");
                        if (nil != output) {
                            NSLog(@"%@", output);
                            [window setString:output];
                        }
                    }
                }
            }
            break;

        case NSStreamEventEndEncountered:
            NSLog(@"Error.");
            break;

    }

}
4

0 に答える 0