在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方法,當調用這個方法時,系統會調起相關服務來進行觸覺觸覺回報的準備工作。