Scroll an NSTextView to bottom after adding text - swift

I want to add text to an NSTextView and scroll it to the bottom like it is done in the console of Xcode. What is the best way to do that in swift 4? I have looked at other answers but they are not in swift or do not work perfectly in when converted to swift.
This is being written for an OS X app and not an iOS app and that is why I am asking about an NSTextView.
To add text, I am simply I am using this code self.logTextView.string += "\nnew text" This allows the text to also be put on a new line. If there is a better way to do this, would love to hear it.
Here is what I have tried already:
Scrolling NSTextView to bottom

NSTextView has an exact action: scrollToEndOfDocument(_ sender: Any?).
So, I suppose the following code is enough.
self.logTextView.string += "\nnew text"
self.logTextView.scrollToEndOfDocument(nil)

Related

autocorrectType is not working on iOS 13 using swift

I know this is quiet simple and straight forward to disable autocorrection on iPhone and it worlds pretty much fine, but until now. Surprisingly, suggestion bar appear for text field even I have disabled it from storyboard and even programmatically.
self.textField.autocorrectionType = .no
Done that in sotoryboard as well.
But it does appear on iOS 13, not on previous versions and simulator.
There are many answers already for this one but none is working on iOS 13 so no need to mark the question as duplicate.
Cheers!
If you are using a Storyboard you can disable autocorrection on the attributes inspector (the down arrow icon) under the Text input traits. See the image below for details.

Word learning of UITextChecker, Swift -- not Working

I want my code to add custom words like 'nooooober' into my iphone dictionary. I write below code. But Still UItextField auto-fill is not showing me 'nooooober' word in autofill options.
Here is my code, written in DidFinishlaunching of appdelegate
if (UITextChecker.hasLearnedWord("nooooober")){
UITextChecker.learnWord("nooooober")
}
Thanks,
Aaban.
Text display and fonts UITextChecker works in the context of a single piece of text, like a document.
So any words that you ignore/learn aren't added globally for the device, just the current context that it is being used on. You wont be able to 'learn' words in your app and then expect auto-fill to use them in another app, such as Messages

Caret cursor color and size

How do I change the size and colour of the flashing cursor in my textfield using my storyboard for my Mac app.
I assume I have to connect it into the view controller script (control drag) and edit some uitextfield color parameter for the cursor?
But I don't seem to be getting anywhere fast. I am working in swift 2.2 with Mac app Storyboards. Like Ulysses and Taskpaper.
In Swift 3:
Change YOURTEXTFIELD to your textfield and you are set:
(YOURTEXTFIELD.value(forKey: "textInputTraits") as AnyObject).setValue(UIColor.black, forKey: "insertionPointColor")
Documentation: https://developer.apple.com/documentation/appkit/nstextview/1449309-insertionpointcolor
Search for _drawInsertionPointInRect that's the private method that you need. Though you also need some other stuff I think... but it's all mixed into my code so I can't say for sure what it all is. Anyway search for _drawInsertionPointInRect and you'll get to some explanations.

xcode 4.2+ Dismiss numberpad

I am looking for a way to dismiss the number pad in xcode 4.2. I have seen a few suggestions for xcode 3 but none of them seem to work for me. It seems silly that there is no clear/non work around way to dismiss the numberpad of a uitextview. Maybe I am just missing something but I have tried about 10 diff ways with no success. If someone could point me towards a current tutorial or share some super secret tricks that would be great thanks!
Dismissing keyboard on any text input control is simply sending resignFirstResponder message to the control. You don't control the keyboard directly.
And this is completely unrelated to XCode version.

UITextview content moves up when textview is selected

I am pretty new to this iPhone dev thing but so far I have built a pretty good app but I have stumbled into this problem that for the life of me I cannot seem to solve.
Basically the app is a chat application for social site. Everything is working 100% except the input box which currently is a UITextbox. This works fine however I would like the box to grow and be a multiline UITextbox with scroll. I replaced the UITextbox with a UITextview and all is good. I have the UITextview expanding as the user enters text however I have one slight problem that is driving me nuts.
When the UITextview gets focus it shifts the cursor and any text in there up just out of view. The UITextview I have set to display 2 lines by default and then as the height of the text goes beyond those two lines I would like the box to grown (which it does) and the text to remain scrolled up so you can see what you are typing. If you look at the SMS app on the iPhone this is exactly how I would like it work.
Any words of wisdom would be greatly appreciated.
I think Blaenk answered perfectly (that was going to be my answer). But just in case you don't want to include Three20 in your project (it's kinda big), below is the relevant code from TTTextEditor. You should be able to call this from wherever you are expanding the text view.
- (void)scrollContainerToCursor:(UIScrollView*)scrollView {
if (_textView.hasText) {
if (scrollView.contentSize.height > scrollView.height) {
NSRange range = _textView.selectedRange;
if (range.location == _textView.text.length) {
[scrollView scrollRectToVisible:CGRectMake(0,scrollView.contentSize.height-1,1,1)
animated:NO];
}
} else {
[scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
}
}
}
Check out three20:
Three20 is a collection of iPhone UI classes, like a photo viewer, and general utilities, like an HTTP disk cache. Three20 is derived from the Facebook iPhone app, which is one of the most downloaded iPhone apps ever.
Specifically, you'll want to take a look at TTTextEditor:
TTTextEditor is a UITextView which can grow in height automatically as you type. I use this for entering messages in Facebook Chat, and it behaves similarly to the editor in Apple's SMS app.
You'll find instructions on how to add three20 to your project here.
I made a subclass of UITextView just for that:
https://github.com/MatejBalantic/MBAutoGrowingTextView
It is an auto-layout based light-weight UITextView subclass which automatically grows and shrinks based on the size of user input and can be constrained by maximal and minimal height - all without a single line of code.
The class is made primarily for use in Interface builder and only works with Auto layout.