在iOS10中,UIKit框架中新增長了3個類,UIImpactFeedbackGenerator類、UINotificationFeedbackGenerator類與UISelectionFeedbackGenerator類。開發者使用這3個類能夠進一步爲用戶的某些交互操做加強反饋。舉例而言,當用戶點擊了某個按鈕,開發者能夠爲其提供一個適當的震動效果做爲觸覺上的反饋。示例代碼以下:html
//這個方法經過傳入參數來肯定觸發什麼樣的用戶觸覺反饋 -(void)feedbackStart:(int)style{ switch (style) { case 1: { UIImpactFeedbackGenerator * imp = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleHeavy]; [imp impactOccurred]; } break; case 2: { UIImpactFeedbackGenerator * imp = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleMedium]; [imp impactOccurred]; } break; case 3: { UIImpactFeedbackGenerator * imp = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleLight]; [imp impactOccurred]; } break; case 4: { UINotificationFeedbackGenerator * imp = [[UINotificationFeedbackGenerator alloc]init]; [imp notificationOccurred:UINotificationFeedbackTypeError]; } break; case 5: { UINotificationFeedbackGenerator * imp = [[UINotificationFeedbackGenerator alloc]init]; [imp notificationOccurred:UINotificationFeedbackTypeSuccess]; } break; case 6: { UINotificationFeedbackGenerator * imp = [[UINotificationFeedbackGenerator alloc]init]; [imp notificationOccurred:UINotificationFeedbackTypeWarning]; } break; case 7: { UISelectionFeedbackGenerator * imp = [[UISelectionFeedbackGenerator alloc]init]; [imp selectionChanged]; } break; default: break; } }
UIImpactFeedbackGenerator類是標準的觸覺反饋類,其調用impactOccurred方法來觸發反饋,其實例在建立時,能夠經過枚舉來建立強度不一樣的反饋:框架
typedef NS_ENUM(NSInteger, UIImpactFeedbackStyle) { //輕度的反饋 UIImpactFeedbackStyleLight, //中等強度的反饋 UIImpactFeedbackStyleMedium, //高強度的反饋 UIImpactFeedbackStyleHeavy };
UINotificationFeedbackGenerator類是專用於通知類交互的觸覺反饋,其在進行反饋時也有3中枚舉類型可選,解析以下:spa
typedef NS_ENUM(NSInteger, UINotificationFeedbackType) { //成功類通知的反饋 UINotificationFeedbackTypeSuccess, //警告類通知的反饋 UINotificationFeedbackTypeWarning, //錯誤類通知的反饋 UINotificationFeedbackTypeError };
UISelectionFeedbackGenerator類建立的反饋應用與某些選擇器控件,例如用戶在一個單選列表中切換選項、切換按鈕的開關狀態時,可使用其來進行觸覺反饋。code
須要注意:不是全部的場景都須要反饋,頻繁的觸覺反饋會給用戶代碼困擾,開發者在使用這些類時要適當。htm
有時候,頻繁的觸覺反饋可能會引發反饋延時,這將大大下降用戶的體驗,官方建議開發者在合適的時機建立反饋,而後調用prepare方法來使反饋準備完成,以後在須要的時機再進行反饋的觸發。須要注意,UIImpactFeedbackGenerator類、UINotificationFeedbackGenerator類與UISelectionFeedbackGenerator類都有一個相同的父類UIFeedbackGenerator類,這個類中定義了prepare方法,當調用這個方法時,系統會調起相關服務來進行觸覺觸覺反饋的準備工做。開發
專一技術,熱愛生活,交流技術,也作朋友。it
——琿少 QQ羣:203317592io