你可以在iOS 9和iPhone 6s中使用taptic引擎吗? WatchOS2和OS X能够使用触觉引擎,所以我认为它也适用于iOS 9,但是我没有为它找到任何API。
答案 0 :(得分:45)
是的,我有反向设计的内部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)
希望这有帮助!
答案 1 :(得分:17)
iOS 9和iOS 9.1目前没有公开的API。
免责声明:有一种方法可以直接与Taptic Engine交互,但有一种私有方法。您不应在App Store应用程序中使用它。
但是,如果您需要进行更多实验,那么您会发现iOS 9中有一个新的私有类:_UITapticEngine
。你可以找到它的标题here。要获得它,UIDevice
类上有一个名为_tapticEngine
的新属性。查看UIDevice
here的完整标题。您可以继续导入这些标头,或者只使用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引擎:
UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)
使用风险自负!
我还写了一点blog post,解释了这一点。
答案 2 :(得分:9)
在iOS 10中,有一个名为UIFeedbackGenerator的新API。有关详细信息,请参阅此post。它现在仅适用于iPhone 7。
答案 3 :(得分:2)
目前似乎没有适用于iOS 9的已发布API。
在OSX上,您需要使用NSHapticFeedbackManager
:
NSHapticFeedbackManager Class Reference
以下是WatchOS2
的API:
WKInterfaceDevice Class Reference
只需在这里搜索,你就可以看到我在说什么:
Haptic search (iOS pre-release) - shows nothing
Haptic search (OSX pre-release) - shows NSHapticFeedbackManager