objective c - Anexar a NSTextView y desplazarse
objective-c macos (5)
OK, lo que necesito debería haber sido muy simple. Sin embargo, he buscado en todas partes y no estoy seguro de haber encontrado algo que funcione al 100% (y es algo que también me ha preocupado en el pasado).
Aqui estamos :
- Quiero poder adjuntar a un
NSTextView
- Después de
NSTextView
,NSTextView
debe desplazarse hacia abajo (para que seNSTextView
últimos contenidosNSTextView
)
Más bien sencillo, ¿eh?
Entonces ... ¿alguna idea? (Un ejemplo de código que realice exactamente este simple "truco" sería más que ideal ...)
Aquí hay una solución Swifti er :
extension NSTextView {
func appendString(string:String) {
self.string! += string
self.scrollRangeToVisible(NSRange(location:countElements(self.string!), length: 0))
}
}
Aquí hay una versión rápida de la respuesta de Anoop Vaidya
extension NSTextView {
func append(string: String) {
let oldString = self.string == nil ? "" : self.string!
let newString = NSString(format: "%@%@", oldString, string)
self.string = newString
}
}
Después de hacer varias referencias cruzadas de respuestas y fuentes (con algunos ajustes), aquí está la respuesta que funciona (dado que _myTextView
es una salida de 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)];
});
}
Simplemente use de esta manera:
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)];