iOS 9中的Taptic

use*_*813 23 iphone ios ios9

您可以在iOS 9中使用iPhone 6s的taptic引擎吗?WatchOS2和OS X能够使用触觉引擎,所以我认为它也将在iOS 9中,但我找不到任何API.

Val*_*gin 47

是的,我有逆向工程内部的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)
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 哇这太棒了!! 但是,这算作私有API吗?他们确实在API参考中包含了AudioServicesPlaySystemSound,但他们没有说明数字的含义:O (2认同)
  • 这些调用不再适用于iOS 10 Beta 6. (2认同)
  • 适用于iOS 10.0.2(: (2认同)

Leg*_*ess 17

iOS 9和iOS 9.1目前没有公共可用的API.

免责声明:有一种方法可以直接与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
Run Code Online (Sandbox Code Playgroud)

这将激活特定手势的taptic引擎,尽管Peek和Pop都与我相似.如果指定任何其他常量,则默认为振动.

我在GitHub上组装了一个快速测试repo ,其中包括一个与Swift兼容的API来使用taptic引擎:

UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)
Run Code Online (Sandbox Code Playgroud)

使用风险自负!

我还写了一篇博文,解释了这一点.


Tus*_*reb 9

在iOS 10中,有一个名为UIFeedbackGenerator的新API.有关详细信息,请参阅此帖子.它现在仅适用于iPhone 7.


Woo*_*ock 2

目前似乎还没有发布适用于 iOS 9 的 API。

在 OSX 上您需要使用NSHapticFeedbackManager

NSHapticFeedbackManager 类参考

这是 API WatchOS2

WKInterfaceDevice 类参考

只需在这里搜索,您就可以看到我在说什么:

触觉搜索(iOS 预发行版)- 不显示任何内容

触觉搜索(OSX 预发行版)- 显示 NSHapticFeedbackManager