OK、必要なものshouldは非常に単純です。しかし、私はいたるところを見て、100%動作するものを見つけたかどうかはわかりません(そしてそれは過去にも私を悩ませてきたものです)。
だから、ここにあります:
NSTextView
にできるようにしたいNSTextView
は下にスクロールする必要があります(最新の追加コンテンツが表示されるように)かなり簡単ですね。
だから...何かアイデアはありますか? (この単純な「トリック」を正確に実行するコード例は、理想以上のものです...)
いくつかの回答とソースを相互参照した後(いくつかの調整を加えて)、これがdoes work(given _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)];
これがSwift AnoopVaidyaの答えのバージョンです
extension NSTextView {
func append(string: String) {
let oldString = self.string == nil ? "" : self.string!
let newString = NSString(format: "%@%@", oldString, string)
self.string = newString
}
}