你能在iPhone 6s上使用iOS 9中的taptic引擎吗?WatchOS2和OS X都可以使用触觉引擎,所以我认为iOS 9也会使用触觉引擎,但我找不到任何用于它的API。
发布于 2016-03-31 05:41:01
耶,我有反向工程的内部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)
希望这能有所帮助!
发布于 2015-09-28 06:33:41
iOS 9和iOS 9.1中目前没有公共可用的API。
免责声明:有一种方法可以直接与Taptic引擎交互,但有一个私有方法。您不应该在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上组合了一个快速测试存储库,其中包括一个使用taptic引擎的与Swift兼容的应用程序接口:
UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)
使用的风险自负!
我还写了一个更长的blog post来解释这一点。
发布于 2016-09-19 01:47:31
在iOS 10中,有一个名为UIFeedbackGenerator的新API。有关更多详细信息,请参阅此post。目前,它只能在iPhone 7上运行。
https://stackoverflow.com/questions/32526868
复制相似问题