您可以在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)
希望这可以帮助!
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)
使用风险自负!
我还写了一篇博文,解释了这一点.
目前似乎还没有发布适用于 iOS 9 的 API。
在 OSX 上您需要使用NSHapticFeedbackManager
:
这是 API WatchOS2
:
只需在这里搜索,您就可以看到我在说什么:
触觉搜索(OSX 预发行版)- 显示 NSHapticFeedbackManager
归档时间: |
|
查看次数: |
9415 次 |
最近记录: |