iOS 9中的Taptic

时间:2015-09-11 15:20:16

标签: ios iphone ios9

你可以在iOS 9和iPhone 6s中使用taptic引擎吗? WatchOS2和OS X能够使用触觉引擎,所以我认为它也适用于iOS 9,但是我没有为它找到任何API。

4 个答案:

答案 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