Таптика в iOS 9

Можете ли вы использовать Taptic Engine в iOS 9 с iPhone 6s? WatchOS2 и OS X имеют возможность использовать тактильный движок, поэтому я предположил, что это будет и в iOS 9, но я не смог найти API для него.

4 ответа

Уу, у меня был реверс-инжиниринг UIKit вещи, и я нашел другой (гораздо более простой) способ активировать обратную связь через TapticEngine! Мы можем просто использовать AudioToolbox рамки и несколько магических констант.

import AudioToolbox

AudioServicesPlaySystemSound(1519) // Actuate `Peek` feedback (weak boom)
AudioServicesPlaySystemSound(1520) // Actuate `Pop` feedback (strong boom)
AudioServicesPlaySystemSound(1521) // Actuate `Nope` feedback (series of three weak booms)

Надеюсь это поможет!

В настоящее время нет общедоступного API в iOS 9 и iOS 9.1.

Отказ от ответственности: есть способ напрямую взаимодействовать с Taptic Engine, но есть частный метод. Вы не должны использовать его в приложениях App Store.

Однако, если вы больше увлекаетесь экспериментированием, то можете обнаружить, что в iOS 9 доступен новый закрытый класс: _UITapticEngine, Вы можете найти его заголовок здесь. Чтобы добраться до него, есть новое свойство на UIDevice класс, называется _tapticEngine, Смотрите полный заголовок для UIDevice здесь Вы можете пойти дальше и импортировать эти заголовки, или просто использовать NSSelectorFromString функция и performSelector: способ добраться до ленточного движка:

id tapticEngine = [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"_tapticEngine") withObject:nil];
[tapticEngine performSelector:NSSelectorFromString(@"actuateFeedback:") withObject:@(1001)]; // Peek
[tapticEngine performSelector:NSSelectorFromString(@"endUsingFeedback:") withObject:@(1002)]; // Pop

Это активирует ленточный движок для определенного жеста, хотя и Peek, и Pop кажутся мне похожими. Если вы укажете любую другую константу, то по умолчанию она будет вибрировать.

Я собрал быстрое тестовое репо вместе на GitHub, который включает в себя Swift-совместимый API для использования движка taptic:

UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)

Используйте на свой риск!

Я также написал немного больше в блоге, объясняя это.

В iOS 10 появился новый API под названием UIFeedbackGenerator. Смотрите этот пост для более подробной информации. Пока работает только на iPhone 7.

Кажется, в настоящее время не опубликовано API для iOS 9.

На OSX вам нужно использовать NSHapticFeedbackManager:

Описание класса NSHapticFeedbackManager

и вот API для WatchOS2:

Описание класса WKInterfaceDevice

Просто ища здесь, вы можете увидеть, что я говорю:

Haptic search (iOS pre-release) - ничего не показывает

Хаптический поиск (предварительная версия OSX) - показывает NSHapticFeedbackManager

Другие вопросы по тегам