# Titanium.UI.iOS.FeedbackGenerator

> The feedback generator API is introduced in iOS 10 to handle the haptic feedback when using an iPhone 7 or later devices.

- Source: https://titaniumsdk.com/docs/sdk/13.1.0/Titanium.UI.iOS.FeedbackGenerator
- Titanium SDK version: 13.1.0
- Kind: proxy
- Platforms: iPhone
- Since: Titanium SDK 6.0.0
- Extends: Titanium.Proxy
- Inheritance: Titanium.Proxy

On supported devices, haptics provide a way to physically engage users with tactile feedback that gets attention and
reinforces actions. Some system-provided interface elements, such as pickers, switches, and sliders, automatically provide
haptic feedback as users interact with them. Your app can also ask the system to generate different types of haptic feedback.
iOS manages the strength and behavior of this feedback.

There are three different kind of feedback generators that can be used for different interaction scenarios:
 
  1. **Selection Feedback**: Indicates that a task or action, such as depositing a check or unlocking a vehicle, has completed,
     failed, or produced a warning of some kind. This feedback type can be used when specifying the
     [Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_SELECTION](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_SELECTION) constant in the `type` property of the feedback generator.

  2. **Impact Feedback**: Provides a physical metaphor that complements the visual experience. For example, the user might feel
     a thud when a view slides into place or two objects collide. This feedback type can be used when specifying the
     [Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_IMPACT](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_IMPACT) constant in the `type` property of the feedback generator. Note that if you use
     this generator type, you also have to specify the `style` property that can be one of the
     [Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_LIGHT](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_IMPACT_STYLE_LIGHT), [Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_MEDIUM](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_IMPACT_STYLE_MEDIUM) or
     [Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_HEAVY](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_IMPACT_STYLE_HEAVY) constants.

  3. **Notification Feedback**: Indicates that the selection is actively changing. For example, the user feels light taps while
     scrolling a picker wheel. This feedback is intended for communicating movement through a series of discrete values, not
     making or confirming a selection. This feedback type can be used when using the [Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_NOTIFICATION](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_NOTIFICATION)
     constant in the `type` property of the feedback generator.
     
**Example**
When clicking a button you should trigger an impact feedback as displayed below.

``` js
var generator = Ti.UI.iOS.createFeedbackGenerator({
  type: Ti.UI.iOS.FEEDBACK_GENERATOR_TYPE_IMPACT,
  style: Ti.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_LIGHT
});
generator.impactOccurred();     
```
  
We're not using `generator.prepare()` here because we're triggering the feedback immediately. When you know a feedback generator is triggered within a couple seconds you should use `prepare()` to know for sure the timing is correct.

See also:

  * [iOS Developer Library: Haptic Feedback](https://developer.apple.com/ios/human-interface-guidelines/interaction/feedback/)

## Properties

### style

- Type: Number
- Platforms: iPhone
- Default: `<Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_MEDIUM>`

The style of the feedback generator you want to create. This property is only required when using [Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_IMPACT](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_IMPACT).

Accepts: `Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_HEAVY`, `Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_LIGHT`, `Titanium.UI.iOS.FEEDBACK_GENERATOR_IMPACT_STYLE_MEDIUM`

### type

- Type: Number
- Platforms: iPhone

The type of feedback generator you want to create.

Accepts: `Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_IMPACT`, `Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_NOTIFICATION`, `Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_SELECTION`

## Methods

### impactOccurred

- Platforms: iPhone

Used to trigger a haptic feedback after an impact occurred.

Note that this method can only be used if the feeback generator type is set to
[Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_IMPACT](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_IMPACT).

### notificationOccurred

- Platforms: iPhone

Used to trigger a haptic feedback after a notification has been received.

Note that this method can only be used if the feeback generator type is set to
[Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_NOTIFICATION](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_NOTIFICATION). The single argument provided is one of the

Parameters:

- `notificationType` (Number): The type of the notification to manage the peculiarity of the haptic feedback. If this parameter is not specified, an error will be thrown.

### prepare

- Platforms: iPhone

Used to prepare the haptic sensor for the upcoming interaction with it.

Apple recommends to use this method before calling one of the `selectionChanged`,
`impactOccurred` or `notificationOccurred` methods to reduce a possible latency.

### selectionChanged

- Platforms: iPhone

Used to trigger a haptic feedback after a selection has been made.

Note that this method can only be used if the feeback generator type is set to
[Titanium.UI.iOS.FEEDBACK_GENERATOR_TYPE_SELECTION](https://titaniumsdk.com/docs/sdk/Titanium.UI.iOS.md#FEEDBACK_GENERATOR_TYPE_SELECTION).

## Inherited members

6 members are inherited. Each is documented on the type that declares it.

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/13.1.0/Titanium.Proxy.md): `addEventListener`, `apiName`, `applyProperties`, `bubbleParent`, `fireEvent`, `removeEventListener`

---

- This corpus documents Titanium SDK 13.4.1. Anything here that does not name a version describes 13.4.1.
- Titanium is maintained by TiDev. The Appcelerator toolchain is retired: there is no `appc` CLI, no Appcelerator Studio and no hosted build service. The supported CLI is `titanium` on npm, invoked as `ti`.

