NSAlignmentFeedbackFilter
An object that can filter the movement of an object and provides haptic feedback when alignment occurs.
Declaration
class NSAlignmentFeedbackFilterOverview
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
NSAlignmentFeedbackFilterobject. For example:
Inform the alignment feedback filter object about the event. To do this, call one of the following methods:
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
Informing the Filter About Events
Preparing Haptic Feedback for Alignment
alignmentFeedbackTokenForMovement(in:previousPoint:alignedPoint:defaultPoint:)alignmentFeedbackTokenForHorizontalMovement(in:previousX:alignedX:defaultX:)alignmentFeedbackTokenForVerticalMovement(in:previousY:alignedY:defaultY:)