Taptic в iOS 9

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

Ответ 1

Yay, у меня был встроенный реверсивный внутренний элемент 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)

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

Ответ 2

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

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

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

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

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

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

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

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

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

Ответ 3

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

Ответ 4

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

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

Справка класса NSHapticFeedbackManager

и вот API для WatchOS2:

Ссылка на класс WKInterfaceDevice

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

Haptic search (предварительный выпуск iOS) - ничего не показывает

Haptic search (предварительный выпуск OSX) - показывает NSHapticFeedbackManager