iOS10为用户添加触摸反馈
在iOS10中,UIKit框架中新增加了3个类,UIImpactFeedbackGenerator类、UINotificationFeedbackGenerator类与UISelectionFeedbackGenerator类。开发者使用这3个类可以进一步为用户的某些交互操作增强反馈。举例而言,当用户点击了某个按钮,开发者可以为其提供一个适当的震动效果作为触觉上的反馈。示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| -(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方法来触发反馈,其实例在创建时,可以通过枚举来创建强度不同的反馈:
1 2 3 4 5 6 7 8
| typedef NS_ENUM(NSInteger, UIImpactFeedbackStyle) { UIImpactFeedbackStyleLight, UIImpactFeedbackStyleMedium, UIImpactFeedbackStyleHeavy };
|
UINotificationFeedbackGenerator类是专用于通知类交互的触觉反馈,其在进行反馈时也有3中枚举类型可选,解析如下:
1 2 3 4 5 6 7 8
| typedef NS_ENUM(NSInteger, UINotificationFeedbackType) { //成功类通知的反馈 UINotificationFeedbackTypeSuccess, //警告类通知的反馈 UINotificationFeedbackTypeWarning, //错误类通知的反馈 UINotificationFeedbackTypeError };
|
UISelectionFeedbackGenerator类创建的反馈应用与某些选择器控件,例如用户在一个单选列表中切换选项、切换按钮的开关状态时,可以使用其来进行触觉反馈。
需要注意:不是所有的场景都需要反馈,频繁的触觉反馈会给用户代码困扰,开发者在使用这些类时要适当。
有时候,频繁的触觉反馈可能会引起反馈延时,这将大大降低用户的体验,官方建议开发者在合适的时机创建反馈,然后调用prepare方法来使反馈准备完成,之后在需要的时机再进行反馈的触发。需要注意,UIImpactFeedbackGenerator类、UINotificationFeedbackGenerator类与UISelectionFeedbackGenerator类都有一个相同的父类UIFeedbackGenerator类,这个类中定义了prepare方法,当调用这个方法时,系统会调起相关服务来进行触觉触觉反馈的准备工作。
专注技术,热爱生活,交流技术,也做朋友。
——珲少 QQ群:203317592