objective-c macos cocoa nstextview

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 se NSTextView últimos contenidos NSTextView )

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


appendAttributedString y scrollToEndOfDocument están disponibles a partir de OS X 10.0 y 10.6 respectivamente

extension NSTextView { func append(string: String) { self.textStorage?.appendAttributedString(NSAttributedString(string: string)) self.scrollToEndOfDocument(nil) } }