Instruction 02

Heads up... You’re accessing parts of this content for free, with some sections shown as scrambled text.

Heads up... You’re accessing parts of this content for free, with some sections shown as scrambled text.

Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.

Unlock now

In addition to requesting how Writing Tools looks on a view and the kind of output it sends back, you can do a couple more sophisticated kinds of configuration:

  • Setting a protected range of text that Writing Tools should not attempt to change.
  • Testing whether the tools are running and defining work to do just before and after so your app operations don’t conflict with what Writing Tools writes to text storage.

Defining Ignored Text Ranges

Although Writing Tools offers useful suggestions, there will be times when the user expects their text to remain exactly as entered, like in code blocks or quotes.

func textView(_ textView: UITextView, writingToolsIgnoredRangesIn enclosingRange: 
  NSRange) -> [NSRange] {
    let text = textView.textStorage.attributedSubstring(from: enclosingRange)
    return rangesInappropriateForWritingTools(in: text)
}

Preventing Unexpected Data Loss or Changes

Next, let’s look at how to handle the app’s state when Writing Tools are active. Writing Tools can directly modify the text storage of your text view. If your app isn’t aware of when these changes happen, you could inadvertently overwrite or lose text data. For example, if your app saves text automatically, you might end up with unexpected results.

See forum comments
Download course materials from Github
Previous: Demo 01 Next: Demo 02