---
title: NSAlignmentFeedbackFilter
framework: appkit
role: symbol
role_heading: Class
path: appkit/nsalignmentfeedbackfilter
---

# NSAlignmentFeedbackFilter

An object that can filter the movement of an object and provides haptic feedback when alignment occurs.

## Declaration

```swift
class NSAlignmentFeedbackFilter
```

## Overview

Overview With a Force Touch trackpad, apps can produce tactile feedback to complement user actions. If your app implements alignment features, you can use the NSAlignmentFeedbackFilter class to filter object movements and provide haptic feedback to the user at appropriate times. As the user drags objects into alignment with a guide or another object, the user actually feels a physical bump as the object snaps into place. Implementing Alignment Feedback To implement alignment feedback in your custom alignment controller class, set up the class to receive events for tracking the movement of an object. These can be events matching the inputEventMask value of an NSAlignmentFeedbackFilter object, or events from a gesture recognizer (NSGestureRecognizer). For each event received: Create an instance of an NSAlignmentFeedbackFilter object. For example: Inform the alignment feedback filter object about the event. To do this, call one of the following methods: update(with:) update(withPanRecognizer:) Store the location of the object before it moves in response to the event. This is considered the previous location of the object. Move the object to its new location in response to the event. This is the location where the object will reside if no alignment occurs. Store the new location of the object. This is considered the default location of the object. Determine where the object will move to be aligned. This is considered the aligned location of the object. Request a feedback token based on the previous location, default location, and aligned location. To do this, call one of the following methods: alignmentFeedbackTokenForMovement(in:previousPoint:alignedPoint:defaultPoint:) - If the object will be moved both horizontally and vertically to become aligned. alignmentFeedbackTokenForHorizontalMovement(in:previousX:alignedX:defaultX:) - If the object will be moved horizontally only to become aligned. alignmentFeedbackTokenForVerticalMovement(in:previousY:alignedY:defaultY:) - If the object will be moved vertically only to become aligned. If a feedback token is successfully prepared, call performFeedback(_:performanceTime:) to perform the haptic feedback. Then, move the object to the aligned location. If a value of null is returned, rather than a feedback token, then the system has determined that alignment and feedback are not appropriate. Perhaps the cursor is moving too fast or the distance to the aligned location is not significant enough to produce a visual snap. Move the object to its default location.

## Topics

### Determining Event Types for the Filter

- [inputEventMask](appkit/nsalignmentfeedbackfilter/inputeventmask.md)

### Informing the Filter About Events

- [update(with:)](appkit/nsalignmentfeedbackfilter/update(with:).md)
- [update(withPanRecognizer:)](appkit/nsalignmentfeedbackfilter/update(withpanrecognizer:).md)

### Preparing Haptic Feedback for Alignment

- [alignmentFeedbackTokenForMovement(in:previousPoint:alignedPoint:defaultPoint:)](appkit/nsalignmentfeedbackfilter/alignmentfeedbacktokenformovement(in:previouspoint:alignedpoint:defaultpoint:).md)
- [alignmentFeedbackTokenForHorizontalMovement(in:previousX:alignedX:defaultX:)](appkit/nsalignmentfeedbackfilter/alignmentfeedbacktokenforhorizontalmovement(in:previousx:alignedx:defaultx:).md)
- [alignmentFeedbackTokenForVerticalMovement(in:previousY:alignedY:defaultY:)](appkit/nsalignmentfeedbackfilter/alignmentfeedbacktokenforverticalmovement(in:previousy:alignedy:defaulty:).md)

### Providing Feedback to the User

- [performFeedback(_:performanceTime:)](appkit/nsalignmentfeedbackfilter/performfeedback(_:performancetime:).md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Haptics

- [NSHapticFeedbackManager](appkit/nshapticfeedbackmanager.md)
- [NSHapticFeedbackPerformer](appkit/nshapticfeedbackperformer.md)
- [NSAlignmentFeedbackToken](appkit/nsalignmentfeedbacktoken.md)
