31

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.

Anoop Vaidya
  • 46,283
  • 15
  • 111
  • 140
MatterGoal
  • 16,038
  • 19
  • 109
  • 186

6 Answers6

28

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

Keith Smiley
  • 61,481
  • 12
  • 97
  • 110
MatterGoal
  • 16,038
  • 19
  • 109
  • 186
24

Setting text on outlet textView Swift Xcode 8.0

textView.string = newString
Peter Ahlberg
  • 1,359
  • 2
  • 24
  • 26
6

Something like this:

[textView setString:@"new value"];
Mogsdad
  • 44,709
  • 21
  • 151
  • 275
Ramy Al Zuhouri
  • 21,580
  • 26
  • 105
  • 187
6

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...

kleopatra
  • 51,061
  • 28
  • 99
  • 211
Duncan Groenewald
  • 8,496
  • 6
  • 41
  • 76
  • 2
    This method is on NSTextStorage now - so, in Swift, `myTextView.textStorage?.setAttributedString(attrString)` – Giles Sep 06 '19 at 08:36
6

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"
Ivan Kholod
  • 111
  • 2
  • 5
0

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()
ja.
  • 1,329
  • 9
  • 14
  • I think adding `aNotification.object!.activateIgnoringOtherApps(true)` to end of `applicationDidFinishLaunching` will fix 1). Not sure about 2) – Jeff Peterson Dec 26 '15 at 13:55