前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS10为用户添加触摸反馈 原

iOS10为用户添加触摸反馈 原

作者头像
珲少
发布2018-08-15 16:24:59
6260
发布2018-08-15 16:24:59
举报
文章被收录于专栏:一“技”之长

iOS10为用户添加触摸反馈

    在iOS10中,UIKit框架中新增加了3个类,UIImpactFeedbackGenerator类、UINotificationFeedbackGenerator类与UISelectionFeedbackGenerator类。开发者使用这3个类可以进一步为用户的某些交互操作增强反馈。举例而言,当用户点击了某个按钮,开发者可以为其提供一个适当的震动效果作为触觉上的反馈。示例代码如下:

代码语言:javascript
复制
//这个方法通过传入参数来确定触发什么样的用户触觉反馈
-(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方法来触发反馈,其实例在创建时,可以通过枚举来创建强度不同的反馈:

代码语言:javascript
复制
typedef NS_ENUM(NSInteger, UIImpactFeedbackStyle) {
    //轻度的反馈
    UIImpactFeedbackStyleLight,
    //中等强度的反馈
    UIImpactFeedbackStyleMedium,
    //高强度的反馈
    UIImpactFeedbackStyleHeavy
};

UINotificationFeedbackGenerator类是专用于通知类交互的触觉反馈,其在进行反馈时也有3中枚举类型可选,解析如下:

代码语言:javascript
复制
typedef NS_ENUM(NSInteger, UINotificationFeedbackType) {
    //成功类通知的反馈
    UINotificationFeedbackTypeSuccess,
    //警告类通知的反馈
    UINotificationFeedbackTypeWarning,
    //错误类通知的反馈
    UINotificationFeedbackTypeError
};

UISelectionFeedbackGenerator类创建的反馈应用与某些选择器控件,例如用户在一个单选列表中切换选项、切换按钮的开关状态时,可以使用其来进行触觉反馈。

    需要注意:不是所有的场景都需要反馈,频繁的触觉反馈会给用户代码困扰,开发者在使用这些类时要适当。

    有时候,频繁的触觉反馈可能会引起反馈延时,这将大大降低用户的体验,官方建议开发者在合适的时机创建反馈,然后调用prepare方法来使反馈准备完成,之后在需要的时机再进行反馈的触发。需要注意,UIImpactFeedbackGenerator类、UINotificationFeedbackGenerator类与UISelectionFeedbackGenerator类都有一个相同的父类UIFeedbackGenerator类,这个类中定义了prepare方法,当调用这个方法时,系统会调起相关服务来进行触觉触觉反馈的准备工作。

专注技术,热爱生活,交流技术,也做朋友。 ——珲少

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/12/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS10为用户添加触摸反馈
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档