<!--
{
  "availability" : [
    "macOS: 15.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(pl)NSWritingToolsCoordinatorDelegate"
  },
  "title" : "NSWritingToolsCoordinator.Delegate"
}
-->

# NSWritingToolsCoordinator.Delegate

An interface that you use to manage interactions between Writing Tools
and your custom text view.

```
protocol Delegate : NSObjectProtocol
```

## Overview

Adopt the `NSWritingToolsCoordinator.Delegate` protocol in the type you
use to manage your custom text view. When you add a [`NSWritingToolsCoordinator`](/documentation/AppKit/NSWritingToolsCoordinator)
object to your view, the coordinator uses this protocol to communicate
with that view. The protocol lets Writing Tools fetch your view’s text,
report suggested changes back to your view, and deliver visual feedback
when Writing Tools features are active. Make sure the type that adopts
this protocol has access to your view’s text storage and can perform
relevant tasks on behalf of the view.

Writing Tools expects you to call the provided handler blocks at the end
of your delegate methods. It’s crucial that you execute these blocks in a
timely manner to allow Writing Tools to perform subsequent tasks. For example,
Writing Tools waits for you to execute the handlers for animation-related methods
before moving on to the next stage of the animations.

## Topics

### Starting a Writing Tools operation

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsContextsFor: NSWritingToolsCoordinator.ContextScope, completion: ([NSWritingToolsCoordinator.Context]) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsContextsFor:completion:))

Asks your delegate to provide the text to evaluate during the Writing Tools
operation.

### Incorporating Writing Tools suggestions

[`func writingToolsCoordinator(NSWritingToolsCoordinator, replace: NSRange, in: NSWritingToolsCoordinator.Context, proposedText: NSAttributedString, reason: NSWritingToolsCoordinator.TextReplacementReason, animationParameters: NSWritingToolsCoordinator.AnimationParameters?, completion: (NSAttributedString?) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:replace:in:proposedText:reason:animationParameters:completion:))

Tells the delegate that there are text changes to incorporate into the view.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, select: [NSValue], in: NSWritingToolsCoordinator.Context, completion: () -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:select:in:completion:))

Asks the delegate to update your view’s current text selection.

### Responding to lifecycle changes

[`func writingToolsCoordinator(NSWritingToolsCoordinator, willChangeTo: NSWritingToolsCoordinator.State, completion: () -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:willChangeTo:completion:))

Notifies your delegate of relevant state changes when Writing Tools
is running in your view.

### Animating inline text changes

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsPreviewFor: NSWritingToolsCoordinator.TextAnimation, of: NSRange, in: NSWritingToolsCoordinator.Context, completion: ([NSTextPreview]?) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsPreviewFor:of:in:completion:))

Asks the delegate for a preview image and layout information for the
specified text.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsPreviewFor: NSRect, in: NSWritingToolsCoordinator.Context, completion: (NSTextPreview?) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsPreviewFor:in:completion:))

Asks the delegate for a preview image and layout information for the
specified text.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, prepareFor: NSWritingToolsCoordinator.TextAnimation, for: NSRange, in: NSWritingToolsCoordinator.Context, completion: () -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:prepareFor:for:in:completion:))

Prepare for animations for the content that Writing Tools is evaluating.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, finish: NSWritingToolsCoordinator.TextAnimation, for: NSRange, in: NSWritingToolsCoordinator.Context, completion: () -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:finish:for:in:completion:))

Asks the delegate to clean up any state related to the specified
Writing Tools animation.

### Displaying proofreading marks

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsRangeInContextWithIdentifierFor: NSPoint, completion: (NSRange, UUID) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsRangeInContextWithIdentifierFor:completion:))

Asks the delegate to provide the location of the character at the
specified point in your view’s coordinate system.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsBoundingBezierPathsFor: NSRange, in: NSWritingToolsCoordinator.Context, completion: ([NSBezierPath]) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsBoundingBezierPathsFor:in:completion:))

Asks the delegate to provide the bounding paths for the specified
text in your view.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsUnderlinePathsFor: NSRange, in: NSWritingToolsCoordinator.Context, completion: ([NSBezierPath]) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsUnderlinePathsFor:in:completion:))

Asks the delegate to provide an underline shape for the specified text
during a proofreading session.

### Providing animation container views dynamically

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsSingleContainerSubrangesOf: NSRange, in: NSWritingToolsCoordinator.Context, completion: ([NSValue]) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsSingleContainerSubrangesOf:in:completion:))

Asks the delegate to divide the specified range of text into the separate
containers that render that text.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsDecorationContainerViewFor: NSRange, in: NSWritingToolsCoordinator.Context, completion: (NSView) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsDecorationContainerViewFor:in:completion:))

Asks the delegate to provide a decoration view for the specified range of text.

### Instance Methods

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsGrammarResultsFor: NSWritingToolsCoordinator.Context, completion: ([NSTextCheckingResult]) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsGrammarResultsFor:completion:))

Asks the delegate for information about grammar issues in the specified context.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, requestsPreviewFor: NSWritingToolsCoordinator.TextAnimation, of: NSRange, in: NSWritingToolsCoordinator.Context, textDecoration: NSWritingToolsCoordinator.TextDecoration, completion: ([NSTextPreview]?) -> Void)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:requestsPreviewFor:of:in:textDecoration:completion:))

Asks the delegate for preview images for the specified text.

[`func writingToolsCoordinator(NSWritingToolsCoordinator, setGrammarCheckingEnabled: Bool)`](/documentation/AppKit/NSWritingToolsCoordinator/Delegate-swift.protocol/writingToolsCoordinator(_:setGrammarCheckingEnabled:))

Notifies the delegate when the user chooses to disable grammar checking.

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)