在iOS 9中使用Taptic
你可以在iPhone 6s中使用iOS 9中的触发引擎吗? WatchOS2和OS X有能力使用触觉引擎,所以我认为它也将在iOS 9中,但我没有find任何API。
是的,我有反向工程的内部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)
希望这可以帮助!
目前在iOS 9和iOS 9.1中没有公开的API。
免责声明:有一种方法直接与Taptic Engine进行交互,但是有一个私有方法。 你不应该在App Store应用程序中使用它。
但是,如果您更多地进行实验,则可以发现iOS 9中有一个新的私有类: _UITapticEngine
。 你可以在这里find它的标题。 为了解决这个问题,在UIDevice
类上有一个新属性,叫做_tapticEngine
。 在这里查看UIDevice
的完整标题。 您可以继续并导入这些头文件,或者只使用NSSelectorFromString
函数和performSelector:
方法来获取引导引擎:
id tapticEngine = [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"_tapticEngine") withObject:nil]; [tapticEngine performSelector:NSSelectorFromString(@"actuateFeedback:") withObject:@(1001)]; // Peek [tapticEngine performSelector:NSSelectorFromString(@"endUsingFeedback:") withObject:@(1002)]; // Pop
虽然Peek和Pop都觉得和我相似,但是这会激活特定手势的触发引擎。 如果您指定任何其他常数,它将默认为振动。
我在GitHub上汇总了一个快速testing回购,其中包括一个Swift兼容的API来使用触发引擎:
UIDevice.currentDevice().tapticEngine().actuateFeedback(UITapticEngineFeedbackPeek)
使用风险自负!
我还写了一个更长的博客文章 ,解释这一点。
在iOS 10中,有一个名为UIFeedbackGenerator的新API。 看到这个职位了解更多详情。 它现在只适用于iPhone 7。
目前似乎还没有iOS 9发布的API。
在OSX上,你需要使用NSHapticFeedbackManager
:
NSHapticFeedbackManager类参考
这里是WatchOS2
的API:
WKInterfaceDevice类参考
通过在这里简单search,你可以看到我在说什么:
触觉search(iOS预发布) – 什么都不显示
触觉search(OSX预发布) – 显示NSHapticFeedbackManager
- Xcode错误:调用-display没有效果
- UITabBarController + UINavigationController和更多选项卡黑屏问题
- 我们可以使用语音框架而videoplayback进行?
- Objective-C中的iOS 10 Rich Media推送通知(媒体附件)
- 设计和编写自己的UIAlertView
- restoreCompletedTransactions()没有调用paymentQueue updatedTransactions?
- 在第一个月,NSDate返回错误的date
- 删除button在UITableview的编辑模式下滚动消失
- UIImage视图不显示在iOS 11 …如何解决?