いいえ、私が必要としているのはです。はとてもシンプルです。しかし、私はどこにでも見てきました。私は100%働く何かを見つけたとは思えません。NSTextViewに追加してスクロール
ので、ここでは、次のとおりです。私が追加した後NSTextView
- (その最新の追加内容が表示されるように)、
NSTextView
は を下にスクロールする必要があり
むしろ簡単ですか?
だから...任意のアイデアですか?いくつかの答えと(いくつかの微調整との)ソースを相互参照した後
いいえ、私が必要としているのはです。はとてもシンプルです。しかし、私はどこにでも見てきました。私は100%働く何かを見つけたとは思えません。NSTextViewに追加してスクロール
ので、ここでは、次のとおりです。私が追加した後NSTextView
NSTextView
はむしろ簡単ですか?
だから...任意のアイデアですか?いくつかの答えと(いくつかの微調整との)ソースを相互参照した後
(正確にこの単純な「トリック」を実行するコードの例が...理想的以上のものでしょう)、ここでは作業を行うことの答えだ(_myTextView
を与えられましたNSTextView
コンセント)は次のとおりです。
- (void)appendToMyTextView:(NSString*)text
{
dispatch_async(dispatch_get_main_queue(), ^{
NSAttributedString* attr = [[NSAttributedString alloc] initWithString:text];
[[_myTextView textStorage] appendAttributedString:attr];
[_myTextView scrollRangeToVisible:NSMakeRange([[_myTextView string] length], 0)];
});
}
は単純にこの方法を使用します。
for (NSInteger i=1; i<=100; i++) {
[self.textView setString:[NSString stringWithFormat:@"%@\n%@",[self.textView string],@(i)]];
}
[self.textView scrollRangeToVisible:NSMakeRange([[self.textView string] length], 0)];
これは私のアプローチとほぼ同じです(例外として、私の経験から、メインスレッドの 'NSTextView'でトリックを実行することは、不具合やあらゆる種類の予期しない動作を避けるためには実際より安全です)。とにかくお返事いただきありがとうございます! ;-) –
ブロックを使用し、textViewのテキストを追加しました。書き直しました。あなたのものは私のものより優れています。 –
はここアヌープVaidyaの答え
のスウィフトバージョンですextension NSTextView {
func append(string: String) {
let oldString = self.string == nil ? "" : self.string!
let newString = NSString(format: "%@%@", oldString, string)
self.string = newString
}
}
追加時に改行が常に追加されるようにセマンティクスを変更しました。 – Kaydell
ここSwifti ERソリューションです:
extension NSTextView {
func appendString(string:String) {
self.string! += string
self.scrollRangeToVisible(NSRange(location:countElements(self.string!), length: 0))
}
}
は '_myTextView'を使用しないでください。代わりに 'self.myTextView'を使用してください。プロパティにアクセスする '_myTextView'メソッドは、何百万回ものコード行を連続して実行しているときにのみ使用するべきです。 'self.myTextView'はスレッドセーフです(宣言された方法に依存します)ので、GCDを使用する場合は特にそうです。 –