Haptic feedback на iPhone 6s

3d_touch_vibration_feedback_7dp7eВ iOS 10 Apple представила API для работы с виброоткликом устройства. К сожалению, этот API работает только на iPhone7 и iPhone 7 Plus. Все остальные устройства этот код просто игнорируют и не выполняют никаких вибраций.
Однако, на iPhone 6s, при использовании 3D Touch, смартфон выполняет виброотклик. Мне стало интересно, можно ли программно вызвать нужный мне паттерн вибрации.

С удивлением обнаружил, что документация по данной теме отсутствует. Стал искать на просторах интернета и нашел весьма элегантное и очень простое решение данной проблемы. Хочу предупредить: среди вариантов, найденных в интернет были такие, которые использовали недокументированные Apple методы. Использование таких методов запрещено для приложений, публикуемых в AppStore. Поэтому от них я отказался сразу и не рассматривал их вообще.
Что касается метода, который будет описан ниже, он тоже не описан в официальной документации, но он не использует никакие незадокументированные методы. Думаю, увидев вариант вызова виброотклика 3D Touch, вы сами поймете принцип вызова.

Программный вызов виброотклика на iPhone 6s

Создадим проект, в котором разместим три кнопки, создадим для них экшкны. Я не стану описывать этот процесс. Думаю, читатели смогут сделать это все самостоятельно. Но на один момент все же хочу обратить внимание.

При добавлении IBAction в код ViewController, я указывал что событие (Event) у кнопки будет на стандартное Touch Up Inside, которое подставляется автоматически, а  событие Touch Down. Это нужно для того, что бы вызвать метод в момент нажатия на кнопку, а не ее отпускания.  

3d_touch_vibration_feedback_5ga8r

Перед декларацией класса ViewController после импорта UIKit, нужно импортировать Фреймворк  AudioToolbox

Ну и в итоге для вызова нужного виброотклика нужно вызвать функцию AudioServicesPlaySystemSound().

Текст ViewController получился таким:

Запустите приложение на реальном устройстве и поднажимайте на кнопки. Вы почувствуете три интегрированных паттерны виброоткликов.

Ссылка проект на gitHub.



Опубликовано в Реальные примеры, Элементы UI Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*