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