文档章节

iOS10为用户添加触摸反馈

珲少
 珲少
发布于 2016/12/09 14:26
字数 669
阅读 520
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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];
            [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中枚举类型可选,解析如下:

typedef NS_ENUM(NSInteger, UINotificationFeedbackType) {
    //成功类通知的反馈
    UINotificationFeedbackTypeSuccess,
    //警告类通知的反馈
    UINotificationFeedbackTypeWarning,
    //错误类通知的反馈
    UINotificationFeedbackTypeError
};

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

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

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

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

——珲少 QQ群:203317592

© 著作权归作者所有

珲少

珲少

粉丝 891
博文 395
码字总数 478712
作品 0
上海
程序员
私信 提问
iOS10 UI教程基改变视图的外观与视图的可见性

iOS10 UI教程基改变视图的外观与视图的可见性 视图是应用程序的界面,是用户在屏幕上看到的对象。用户可以通过触摸视图上的对象与应用程序进行交互,所以视图界面的优劣会直接影响到了客户体...

大学霸
2016/11/22
9
0
iOS10语音识别框架SpeechFramework应用

iOS10语音识别框架SpeechFramework应用 一、引言 iOS10系统是一个较有突破性的系统,其在Message,Notification等方面都开放了很多实用性的开发接口。本篇博客将主要探讨iOS10中新引入的Spe...

珲少
2016/09/25
3.6K
4
iOS端使用replaykit录制屏幕的技术细节

前面两篇文章: iOS端屏幕录制(replaykit)调研 iOS端屏幕录制Replaykit项目实践 已经对iOS端实现屏幕录制的调研结果和简单实践进行了概述,本篇开始将分别将iOS10、iOS11、iOS12系统上具体...

杭研融合通信iOS
2018/10/23
0
0
iOS10 UI设计基础教程

iOS10 UI设计基础教程 介绍:本教程针对iOS初级开发人员,基于iOS 10系统,使用Swift 3.0语言讲解如何进行UI设计。本教程内容涵盖UI基础构成、UI元素、自动布局、自适应UI、UI动画、UI交互和...

大学霸
2016/11/10
14
0
DevExpress v15.1:WPF控件升级(四)

<下载最新版DevExpress WPF Controls v15.1.5> WPF编辑器 在Token编辑器中的Per-Pixel滚动 水平和垂直的per-pixel滚动 渐进式搜索 查找和组合框编辑器:在只读模式中渐进式搜索。 WPF Tab Co...

Miss_Hello_World
2015/08/27
167
0

没有更多内容

加载失败,请刷新页面

加载更多

如何管stderr,而不是stdout?

我有一个要写入信息的程序stdout和stderr ,我需要grep通过什么是未来标准错误 ,而忽视标准输出 。 我当然可以分2步完成: command > /dev/null 2> temp.filegrep 'something' temp.file...

技术盛宴
18分钟前
4
0
centos7.5上通过docker安装并运行mysql5.7

1. docker pull mysql:5.7 2. docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7...

Ryub
21分钟前
4
0
什么是比赛条件?

在编写多线程应用程序时,遇到的最常见问题之一是竞争条件。 我对社区的问题是: 什么是比赛条件? 您如何检测到它们? 您如何处理它们? 最后,如何防止它们发生? #1楼 当设备或系统试图同...

javail
33分钟前
4
0
SpringMVC源码分析-DispatcherServlet-init方法分析

上一篇:SpringMVC源码分析-DispatcherServlet实例化干了些什么 先吐槽一下。。。写了两小时的博客突然被俺家小屁孩按了刷新,东西不见了,建议OSCHINA能够自动定时保存啊。让我先安静一下。...

特拉仔
40分钟前
4
0
python协程 生成器

协程,又称微线程,纤程。英文名Coroutine。 线程是系统级别的它们由操作系统调度,而协程则是程序级别的由程序根据需要自己调度。在一个线程中会有很多函数,我们把这些函数称为子程序,在子...

沙门行道
50分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部