Change the text of a NSTextView programmatically

2020-02-26 04:49发布

问题:

I can't find any parameter that seems to be related with the text value showed in a NSTextView. I understood that a NSTextView uses a complex structure (with NSLayoutManager etc...), but I can't find a valid way to modify the current text value.

回答1:

The right method is "setString" [textView setString:@"the string"];



回答2:

Setting text on outlet textView Swift Xcode 8.0

textView.string = newString


回答3:

If you want to set attributed text (formatted text) them try

[myTextView setAttributedString:(NSAttributedString*)attrString].

NSTextView contains a NSTextStorage object that actually holds the text...



回答4:

Something like this:

[textView setString:@"new value"];


回答5:

Objective C / Xcode 9

[myTextView setString:@"The string"];
self.myTextView.string = @"My String";

Swift / Xcode 9

self.myTextView.setString("MyString")
self.myTextView.string = "My String"


回答6:

Almost there - the program is below - this almost works. There are two outstanding problems:

1) It takes two mouse click to set the correct selection point in the text the first always goes to the end of the text. The second to the required
position

2) A strange error is printed in the shell - Assertion failure in -[LUPresenter animationControllerForTerm:atLocation:options:], /SourceCache/Lookup/Lookup-160/Framework/Classes/LUPresenter.m:

  import Cocoa


  class MyAppDelegate: NSObject, NSApplicationDelegate {

      let window = NSWindow()


      func applicationDidFinishLaunching(aNotification: NSNotification) {

          window.setContentSize(NSSize(width:600, height:200))
          window.styleMask = NSTitledWindowMask | NSClosableWindowMask |
                             NSMiniaturizableWindowMask |
                             NSResizableWindowMask





          window.opaque = false
          window.center();
          window.title = "My window"

          let ed = NSTextView(frame: NSMakeRect(20, 10, 180, 160))
          ed.font = NSFont(name:"Helvetica Bold", size:20)
          ed.string = "edit me"
          ed.editable = true
          ed.selectable = true

          window.contentView!.addSubview(ed)

          window.makeKeyAndOrderFront(window)
          window.level = 1
      }

      func applicationWillTerminate(aNotification: NSNotification) {
          // Insert code here to tear down your application
      }

  }

  let app = NSApplication.sharedApplication()
  app.setActivationPolicy(.Regular)

  let obj = MyAppDelegate()

  app.delegate = obj
  app.run()