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,NSTextViewdebe 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)];