Providing Haptic Feedback in Xamarin.iOS
Overview
On the iPhone 7 and iPhone 7 Plus, Apple has included new haptic responses that provide additional ways to physically engage the user. Haptic Feedback (often referred to simply as Haptics) uses the sense of touch (via force, vibrations or motion) in User Interface design. Use these new tactile feedback options to get the user's attention and reinforce their actions.
The following topics will be covered in detail:
- About Haptic Feedback
- UIImpactFeedbackGenerator
- UINotificationFeedbackGenerator
- UISelectionFeedbackGenerator
About Haptic Feedback
Several built-in UI elements already provide haptic feedback such as Pickers, Switches and Sliders. iOS 10 now adds the ability to programmatically trigger haptics using a concrete subclass of the UIFeedbackGenerator
class.
The developer can use one of the following UIFeedbackGenerator
subclasses to programmatically trigger haptic feedback:
UIImpactFeedbackGenerator
- Use this feedback generator to complement an action or task such as presenting a "thud" when a View slides into place or if two onscreen objects collide.UINotificationFeedbackGenerator
- Use this feedback generator for notifications such as an action completing, failing or any other type of warning.UISelectionFeedbackGenerator
- Use this feedback generator for a selection actively changing such as picking an item from a list.
UIImpactFeedbackGenerator
Use this feedback generator to complement an action or task such as presenting a "thud" when a View slides into place or if two onscreen objects collide.
Use the following code to trigger impact feedback:
using UIKit;
...
// Initialize feedback
var impact = new UIImpactFeedbackGenerator (UIImpactFeedbackStyle.Heavy);
impact.Prepare ();
// Trigger feedback
impact.ImpactOccurred ();
When the developer creates a new instance of the UIImpactFeedbackGenerator
class they provide a UIImpactFeedbackStyle
specifying the strength of the feedback as:
Heavy
Medium
Light
The Prepare
method of the UIImpactFeedbackGenerator
is called to inform the system that haptic feedback is about to occur so that it can minimize latency.
The ImpactOccurred
method then triggers haptic feedback.
UINotificationFeedbackGenerator
Use this feedback generator for notifications such as an action completing, failing or any other type of warning.
Use the following code to trigger notification feedback:
using UIKit;
...
// Initialize feedback
var notification = new UINotificationFeedbackGenerator ();
notification.Prepare ();
// Trigger feedback
notification.NotificationOccurred (UINotificationFeedbackType.Error);
A new instance of the UINotificationFeedbackGenerator
class is created and its Prepare
method is called to inform the system that haptic feedback is about to occur so that it can minimize latency.
The NotificationOccurred
is called to trigger haptic feedback with a given UINotificationFeedbackType
of:
Success
Warning
Error
UISelectionFeedbackGenerator
Use this feedback generator for a selection actively changing such as picking an item from a list.
Use the following code to trigger selection feedback:
using UIKit;
...
// Initialize feedback
var selection = new UISelectionFeedbackGenerator ();
selection.Prepare ();
// Trigger feedback
selection.SelectionChanged ();
A new instance of the UISelectionFeedbackGenerator
class is created and its Prepare
method is called to inform the system that haptic feedback is about to occur so that it can minimize latency.
The SelectionChanged
method then triggers haptic feedback.
Summary
This article has covered the new types of haptic feedback available in iOS 10 and how to implement them in Xamarin.iOS.