国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

關(guān)于Taptic Engine震動反饋

移動開發(fā) iOS
Taptic Engine 是蘋果產(chǎn)品上推出的全新震動模塊,該元件最早出現(xiàn)在 Apple Watch 中。iPhone 6s 和 iPhone 6s Plus 中,也同樣內(nèi)置了Taptic Engine,在設(shè)計上有所升級。Taptic Engine 振動模塊為 Apple Watch 以及 iPhone 6s、iPhone 7 提供了 Force Touch 以及 3D Touch,不同的屏幕操作,可以感受到不同的振動觸覺效果,帶來更好的用戶體驗。

What has Happened?

上周,leader 拿著 iPhone 7 打開了網(wǎng)易新聞,問我:『你看,你這里的下拉刷新是短震動,我們的手機(jī)數(shù)周遙控電視的時候只有長震動,產(chǎn)品那邊問能不能用短震動』。

然后博主就去查看了一下關(guān)于短震動的方式,整個過程可以描述為——『資料真少!』。

不過最后通過一下午的搜集,最終還是總結(jié)整理出來了這份文檔,也補(bǔ)充了自己對 iPhone 6s 之后對 Taptic Engine 的了解。

[[182182]]

Taptic Engine

先了解一個概念——Taptic Engine

Taptic Engine 是蘋果產(chǎn)品上推出的全新震動模塊,該元件最早出現(xiàn)在 Apple Watch 中。iPhone 6s 和 iPhone 6s Plus 中,也同樣內(nèi)置了Taptic Engine,在設(shè)計上有所升級。

Taptic Engine 振動模塊為 Apple Watch 以及 iPhone 6s、iPhone 7 提供了 Force Touch 以及 3D Touch,不同的屏幕操作,可以感受到不同的振動觸覺效果,帶來更好的用戶體驗。

短震方法一 AudioServicesPlaySystemSound

常用調(diào)用:

  1. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 

以上代碼在各個型號手機(jī)中反應(yīng)為長震

API 系統(tǒng)版本支持:

  1. __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_2_0); 

APPLE 公開的 SystemSoundID 有:

  1. CF_ENUM(SystemSoundID) 
  2. kSystemSoundID_UserPreferredAlert = 0x00001000, 
  3. kSystemSoundID_FlashScreen = 0x00000FFE, 
  4. // this has been renamed to be consistent 
  5. kUserPreferredAlert = kSystemSoundID_UserPreferredAlert 
  6. }; 
  7.   
  8. CF_ENUM(SystemSoundID) 
  9. kSystemSoundID_Vibrate = 0x00000FFF 
  10. };  

以上類型 沒有短震動 。

但通過以下代碼,可以得到更多類型的震動:

  1. // 普通短震,3D Touch 中 Pop 震動反饋 
  2. AudioServicesPlaySystemSound(1520);  
  1. // 普通短震,3D Touch 中 Peek 震動反饋 
  2. AudioServicesPlaySystemSound(1519);  
  1. // 連續(xù)三次短震 
  2. AudioServicesPlaySystemSound(1521);  

但以上 ID 均未在 Apple 的 Documents 中描述。顯然,這是調(diào)用了一些私有一些屬性 。

關(guān)于是否調(diào)用了私有 API,也有一些討論,可以查看這里(https://forums.developer.apple.com/thread/45628)。

短震方法二 獲取 _tapticEngine

這種方法是從這里(https://unifiedsense.com/development/using-taptic-engine-on-ios.html)搜集到的。

  1. id tapticEngine = [[UIDevice currentDevice] performSelector: NSSelectorFromString(@"_tapticEngine"
  2. withObject:nil]; 
  3. [tapticEngine performSelector: NSSelectorFromString(@"actuateFeedback:"
  4. withObject:@(0)];  

或者:

  1. id tapticEngine = [[UIDevice currentDevice] performSelector: NSSelectorFromString(@"_tapticEngine"
  2. withObject:nil]; 
  3.   
  4. SEL selector = NSSelectorFromString(@"actuateFeedback:"); 
  5. int32_t arg = 1001; 
  6.   
  7. NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[tapticEngine methodSignatureForSelector:selector]]; 
  8. [inv setTarget:tapticEngine]; 
  9. [inv setSelector:selector]; 
  10. [inv setArgument:&arg atIndex:2]; 
  11. [inv invoke];  

顯然, 這是調(diào)用了私有 API 。

這些方法,在實際測試的時候發(fā)現(xiàn),在 iPhone 7 上調(diào)用沒有震動反饋,在 iPhone 6S Plus 上調(diào)用有震動反饋,在 iPhone 6 上調(diào)用 無反饋。

短震方法三 UIImpactFeedbackGenerator

iOS10 引入了一種新的、產(chǎn)生觸覺反饋的方式, 幫助用戶認(rèn)識到不同的震動反饋有不同的含義 。這個功能的核心就是由 UIFeedbackGenerator 提供。Apple 對于 UIImpactFeedbackGenerator 有一篇介紹文檔。

UIFeedbackGenerator 可以幫助你實現(xiàn) haptic feedback。它的要求是:

  • 支持 Taptic Engine 機(jī)型 (iPhone 7 以及 iPhone 7 Plus).
  • app 需要在前臺運(yùn)行
  • 系統(tǒng) Haptics setting 需要開啟

Apple 曾表示公開了 Taptic Engine 的 API,但是鮮有文檔。在搜羅了各種資料后,可以認(rèn)為 UIImpactFeedbackGenerator 即 Taptic Engine 的 公開 API。

它的調(diào)用方式是: 

  1. UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleLight]; 
  2. [generator prepare]; 
  3. [generator impactOccurred];  

Others

觀察 UIImpactFeedbackGenerator 你會發(fā)現(xiàn)它繼承于 UIFeedbackGenerator。除了 UIImpactFeedbackGenerator 還有三種 FeedbackGenerator:

  1. UIImpactFeedbackGenerator
  2. UISelectionFeedbackGenerator
  3. UINotificationFeedbackGenerator

詳情可參考 Apple 的 這篇 Reference(https://developer.apple.com/reference/uikit/uifeedbackgenerator?language=objc) 。

對于震動反饋的應(yīng)用,Apple 也給出了示例場景:

  1. - (IBAction)gestureHandler:(UIPanGestureRecognizer *)sender { 
  2.   
  3. switch (sender.state) { 
  4. case UIGestureRecognizerStateBegan: 
  5.   
  6. // Instantiate a new generator. 
  7. self.feedbackGenerator = [[UISelectionFeedbackGenerator alloc] init]; 
  8.   
  9. // Prepare the generator when the gesture begins. 
  10. [self.feedbackGenerator prepare]; 
  11.   
  12. break; 
  13.   
  14. case UIGestureRecognizerStateChanged: 
  15.   
  16. // Check to see if the selection has changed... 
  17. if ([self myCustomHasSelectionChangedMethodWithTranslation:[sender translationInView: self.view]]) { 
  18.   
  19. // Trigger selection feedback. 
  20. [self.feedbackGenerator selectionChanged]; 
  21.   
  22. // Keep the generator in a prepared state. 
  23. [self.feedbackGenerator prepare]; 
  24.   
  25.   
  26. break; 
  27.   
  28. case UIGestureRecognizerStateCancelled: 
  29. case UIGestureRecognizerStateEnded: 
  30. case UIGestureRecognizerStateFailed: 
  31.   
  32. // Release the current generator. 
  33. self.feedbackGenerator = nil; 
  34.   
  35. break; 
  36.   
  37. default
  38.   
  39. // Do nothing. 
  40. break; 
  41.  

三種方法在測試機(jī)上不同的反饋結(jié)果

AUDIOSERVICESPLAYSYSTEMSOUND 1519 1520 1521
iPhone 7(iOS 10) peek 觸感 pop 觸感 三次連續(xù)短振
iPhone 6s Puls(iOS 9) peek 觸感 pop 觸感 三次連續(xù)短振
iPhone 6(iOS 10) 無振動 無振動 無振動
獲取 _TAPTICENGINE  
iPhone 7(iOS 10) 無振動
iPhone 6s Puls(iOS 9) 長振
iPhone 6(iOS 10) 無振動
UIIMPACTFEEDBACKGENERATOR .LIGHT .MEDIUM .HEAVY
iPhone 7(iOS 10) 微弱短振 中等短振 明顯短振
iPhone 6s Puls(iOS 9) 長振 長振 長振
iPhone 6(iOS 10) 無振動 無振動 無振動

總結(jié)一下,希望同樣的代碼能在更多的機(jī)型上實現(xiàn)短振,建議使用 AudioServicesPlaySystemSound(1519)。不過可能會涉及到調(diào)用私有 API。安全起見,可以使用 UIImpactFeedbackGenerator。

代碼

測試代碼在這里(https://github.com/summertian4/iOS-ObjectiveC/tree/master/iPhoneShakeDemo)。 

責(zé)任編輯:龐桂玉 來源: iOS大全
相關(guān)推薦

2011-03-18 09:19:40

Windows 8

2010-01-28 13:56:16

Android震動

2022-06-03 07:33:38

反饋流程敏捷團(tuán)隊

2015-02-04 18:56:04

意美森魅族觸覺反饋

2011-06-16 15:59:40

Qt Symbian

2009-07-10 09:58:08

Swing控件聽覺反饋

2016-12-08 13:22:43

數(shù)據(jù)反饋大數(shù)據(jù)

2015-09-22 15:01:57

移動應(yīng)用Bug快速反饋

2017-05-24 17:56:44

停服通知51CTO學(xué)院

2012-12-20 11:05:12

IBMdW

2016-12-08 13:16:50

大數(shù)據(jù)用戶反饋

2023-04-27 14:39:57

騰訊C++后端

2010-04-16 13:41:24

Ubuntu 10.0

2021-11-02 09:33:53

Windows 11Snipping To修復(fù)

2023-06-01 09:00:00

圖像分割模自動化

2012-07-13 14:41:12

2023-06-01 08:00:00

圖像分割機(jī)器學(xué)習(xí)

2011-04-11 10:09:20

委托反饋C++

2021-11-22 11:42:19

IT風(fēng)險風(fēng)險評估框架網(wǎng)絡(luò)安全

2021-03-10 17:16:56

微軟 UserVoice反饋論壇
點贊
收藏

51CTO技術(shù)棧公眾號

激情成人中文字幕| 国产在线国偷精品免费看| 亚洲va久久久噜噜噜久久| 成人av网站免费观看| 亚洲欧美日韩直播| 国产一区二区中文字幕免费看| 高清一区二区三区视频| 国产成人免费| 国产中文字幕一区二区三区 | 国产最新精品免费| 国产亚洲aⅴaaaaaa毛片| 亚洲一级免费观看| 极品尤物久久久av免费看| 欧美猛交免费看| 五月天激情视频在线观看| 日韩毛片视频| 日本高清不卡在线观看| 免费成人在线观看av| 9l视频自拍九色9l视频成人| 久久欧美中文字幕| 2019中文在线观看| 99爱精品视频| 日韩精品久久| 日韩精品欧美国产精品忘忧草 | 国产精品男女| 欧美高清你懂得| 黄色高清视频网站| 日韩成人免费在线| 欧美一区二区三区在| 好看的日韩精品| 亚洲福利久久| 欧美精品久久久久久久免费观看 | 成人av一区二区三区| 成人欧美一区二区三区黑人免费| 中国av在线播放| 一本色道88久久加勒比精品| 三区精品视频| 天堂中文av| 亚洲午夜一区二区三区| 国产主播自拍av| 一区二区三区网站| 亚洲色图一区二区| 99re热久久这里只有精品34| 人妖一区二区三区| 亚洲尤物视频网| av超碰在线| 欧美日韩国产精品一区二区不卡中文| 国产精品大片wwwwww| 亚洲激情影院| 国外成人性视频| 老汉色老汉首页av亚洲| 日韩一区二区高清| 婷婷综合国产| 欧美日韩美女在线| 亚洲电影小说图| 最近日韩中文字幕| 韩日视频在线观看| 岛国一区二区三区| 久久精品xxx| 久久99久久久久| 水蜜桃色314在线观看| 欧美成人久久| 日韩一区二区三区av| 不卡中文字幕| 4虎在线播放1区| 精品一区二区三区免费毛片爱| 国产精品吴梦梦| 国产午夜精品一区二区三区视频 | 国产精品入口66mio| 精品一区在线播放| 国产精品一区二区x88av| 免费在线观看亚洲视频| 一区二区三区精品久久久| 国产三级在线播放| 日韩中文第一页| 国产精品久久占久久| 妞干网在线视频观看| 欧洲生活片亚洲生活在线观看| 日本不卡1234视频| 欧美激情视频给我| 国产欧美日韩精品一区二区免费 | 欧美精品国产精品日韩精品| 青青草国产免费一区二区下载| 国产网站欧美日韩免费精品在线观看 | 成人影片在线播放| 成人aa视频在线观看| caoporen人人| 色综合 综合色| 久久精品国产精品亚洲毛片| 97视频在线免费观看| 欧美3p视频| 日本免费高清一区二区| 91视视频在线直接观看在线看网页在线看 | 色偷偷噜噜噜亚洲男人的天堂| 欧美日韩亚洲一区三区| 在线视频不卡一区二区三区| 97精品久久久久中文字幕| 全部a∨一极品视觉盛宴| 高清国产在线一区| 精品奇米国产一区二区三区| 369你懂的电影天堂| 欧美极品第一页| 亚洲精品日韩专区silk| 日韩精品永久网址| 婷婷综合六月| 国产丝袜一区二区三区免费视频| 激情图片qvod| 国产欧美va欧美不卡在线| 波多野结衣久草一区| 粉嫩一区二区三区在线看| 亚洲精品中文字幕99999| 性欧美18~19sex高清播放| av成人观看| 日韩制服丝袜先锋影音| 波多野结衣激情| 色播五月激情综合网| 国产美女性感在线观看懂色av| 欧美在线免费观看视频| 欧美大片网站| 国产又大又长又粗又黄| 欧美日韩精品国产| 日韩av黄色| 性欧美videosex高清少妇| 成人黄页毛片网站| 亚洲an天堂an在线观看| 亚洲人成亚洲人成在线观看| 久久久久久美女精品| 欧美aⅴ在线观看| 欧美成人免费全部| 国产农村妇女精品| 日本福利在线| 国产小视频国产精品| 99久久伊人| 亚洲成人久久网| 色999国产精品| 粉嫩av一区| 77导航福利在线| 黄色网址在线播放| 3atv一区二区三区| 成人a'v在线播放| 免费av片风间由美在线| 中文字幕视频在线免费欧美日韩综合在线看 | y4480在线8影院| 91爱视频在线| 亚洲视频1区2区| 欧美中文字幕一区二区| www.天天射.com| 九九热最新视频//这里只有精品 | 色哟哟欧美精品| 日本大胆欧美人术艺术动态| 成人黄色片视频| 免费不卡在线观看av| 91久色porny| 日韩综合一区| 夜鲁夜鲁夜鲁视频在线播放| 欧美片网站yy| 欧美偷拍综合| www红色一片_亚洲成a人片在线观看_| 国模无码视频一区二区三区| 国产精品人成电影在线观看| 久久久亚洲欧洲日产国码αv| 一区在线不卡| 日本wwww视频| 97av在线影院| 亚洲成人动漫一区| 亚洲免费大片| 亚洲人午夜精品免费| 久久九九99视频| 99亚洲一区二区| 欧美国产一区二区三区激情无套| 激情影院在线观看| 人人做人人爽| 91专区在线观看| 国内自拍在线观看| 三上悠亚在线观看| 欧美精品中文| 一区二区三区**美女毛片| 亚洲黄色www网站| 蜜桃欧美视频| 成人福利网站| 日本aⅴ精品一区二区三区 | 亚洲色图第一页| 一区在线视频观看| 蜜芽tv福利在线视频| 日本高清久久天堂| 国产精品成人播放| 色婷五月综激情亚洲综合| 2020国产精品小视频| 成人综合婷婷国产精品久久蜜臀| 91麻豆精品国产91久久久 | 888av在线视频| 久草热8精品视频在线观看| 欧美一级在线观看| 日韩在线电影一区| 成年男女免费视频网站不卡| 麻豆成人久久精品二区三区小说| 欧美高清hd18日本| 欧美一区二区三区四区夜夜大片| 一区二区三区视频网站| 老司机精品视频一区二区三区|