---
title: "textStorage(_:didProcessEditing:range:changeInLength:)"
framework: uikit
role: symbol
role_heading: Instance Method
path: "uikit/nstextstoragedelegate/textstorage(_:didprocessediting:range:changeinlength:)"
---

# textStorage(_:didProcessEditing:range:changeInLength:)

The method the framework calls when a text storage object has finished processing edits.

## Declaration

```swift
optional func textStorage(_ textStorage: NSTextStorage, didProcessEditing editedMask: NSTextStorage.EditActions, range editedRange: NSRange, changeInLength delta: Int)
```

## Parameters

- `textStorage`: The text storage object processing edits.
- `editedMask`: The types of edits done: doc://com.apple.uikit/documentation/UIKit/NSTextStorage/EditActions/editedAttributes, doc://com.apple.uikit/documentation/UIKit/NSTextStorage/EditActions/editedCharacters, or both.
- `editedRange`: The range in the original string (before the edit).
- `delta`: The length delta for the editing changes.

## Discussion

Discussion Sent inside processEditing() right before notifying layout managers. Delegates can change the attributes. The delegate can verify the final state of the text storage object; it can’t change the text storage object’s characters without leaving it in an inconsistent state, but if necessary it can change attributes. Note that even in this case it’s possible to put a text storage object into an inconsistent state—for example, by changing the font of a range to one that doesn’t support the characters in that range, such as using a Latin font for Kanji text.

## See Also

### Processing edit actions

- [textStorage(_:willProcessEditing:range:changeInLength:)](uikit/nstextstoragedelegate/textstorage(_:willprocessediting:range:changeinlength:).md)
