天天看點

iOS10為使用者添加觸摸回報

在iOS10中,UIKit架構中新增加了3個類,UIImpactFeedbackGenerator類、UINotificationFeedbackGenerator類與UISelectionFeedbackGenerator類。開發者使用這3個類可以進一步為使用者的某些互動操作增強回報。舉例而言,當使用者點選了某個按鈕,開發者可以為其提供一個适當的震動效果作為觸覺上的回報。示例代碼如下:

//這個方法通過傳入參數來确定觸發什麼樣的使用者觸覺回報

-(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];

       case 3:

           UIImpactFeedbackGenerator * imp = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleLight];

       case 4:

           UINotificationFeedbackGenerator * imp = [[UINotificationFeedbackGenerator alloc]init];

           [imp notificationOccurred:UINotificationFeedbackTypeError];

       case 5:

           [imp notificationOccurred:UINotificationFeedbackTypeSuccess];

       case 6:

           [imp notificationOccurred:UINotificationFeedbackTypeWarning];

       case 7:

           UISelectionFeedbackGenerator * imp = [[UISelectionFeedbackGenerator alloc]init];

           [imp selectionChanged];

       default:

   }

}

UIImpactFeedbackGenerator類是标準的觸覺回報類,其調用impactOccurred方法來觸發回報,其執行個體在建立時,可以通過枚舉來建立強度不同的回報:

typedef NS_ENUM(NSInteger, UIImpactFeedbackStyle) {

   //輕度的回報

   UIImpactFeedbackStyleLight,

   //中等強度的回報

   UIImpactFeedbackStyleMedium,

   //高強度的回報

   UIImpactFeedbackStyleHeavy

};

UINotificationFeedbackGenerator類是專用于通知類互動的觸覺回報,其在進行回報時也有3中枚舉類型可選,解析如下:

typedef NS_ENUM(NSInteger, UINotificationFeedbackType) {

   //成功類通知的回報

   UINotificationFeedbackTypeSuccess,

   //警告類通知的回報

   UINotificationFeedbackTypeWarning,

   //錯誤類通知的回報

   UINotificationFeedbackTypeError

UISelectionFeedbackGenerator類建立的回報應用與某些選擇器控件,例如使用者在一個單選清單中切換選項、切換按鈕的開關狀态時,可以使用其來進行觸覺回報。

   需要注意:不是所有的場景都需要回報,頻繁的觸覺回報會給使用者代碼困擾,開發者在使用這些類時要适當。

   有時候,頻繁的觸覺回報可能會引起回報延時,這将大大降低使用者的體驗,官方建議開發者在合适的時機建立回報,然後調用prepare方法來使回報準備完成,之後在需要的時機再進行回報的觸發。需要注意,UIImpactFeedbackGenerator類、UINotificationFeedbackGenerator類與UISelectionFeedbackGenerator類都有一個相同的父類UIFeedbackGenerator類,這個類中定義了prepare方法,當調用這個方法時,系統會調起相關服務來進行觸覺觸覺回報的準備工作。

繼續閱讀