UI-事件处理

事件的概念

  • UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象
  • 分三类:触摸事件、晃动事件、远程控制事件
  • 触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点 触摸,包含1个到多个触摸点

实现触摸

  • UIView?持触摸事件(因为继承于UIResponder),?而且?持多点触摸。
  • 需要定义UIView子类,实现触摸相关的方法。
  • touches..began、touches..moved、touches...ended、 touches..canceled。

使用触摸实现手势

  • 手势:有规律的触摸。
  • UITouch代表触摸在屏幕上的?根手指。可以获取触摸时间和触摸位置。
  • 如何获取touch对象。touches集合中包含了视图上的所有?手势。

响应者链

由多个响应者对象组成的链

什么是响应者

UIResponder。响应者类

IOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应者。

系统定义了一个抽象的父类UIResponder来表示响应者。其子类都是响应者。

//开始触摸时候会进来这个方法里边看看有什么需要执行的操作
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"触摸开始");
    //确定我们手指触摸的点得位置
    _startPoint = [[touches anyObject]locationInView:self];
}

//取消触摸
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"取消触摸");
}

//在移动的过程中我们会一直走这个方法直到停止
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"我一直在触摸");
    CGPoint nowPoint = [[touches anyObject]locationInView:self];
    //偏移量
    CGFloat x = nowPoint.x - _startPoint.x;
    CGFloat y = nowPoint.y - _startPoint.y;
    self.center= CGPointMake(self.center.x+x, self.center.y+y);
    self.backgroundColor = [UIColor colorWithRed:KRandom green:KRandom blue:KRandom alpha:1];
}

//停止触摸
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"停止触摸");

}

时间: 2024-08-24 18:05:20

UI-事件处理的相关文章

Android UI布局与控件(二)

一.View类的常用xml属性:[了解] ①.Android中所有的UI(用户界面)元素都是使用View和ViewGroup对象建立的 ②.View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象 ③.ViewGroup是一个包含多个的View和ViewGroup的容器,用来定义UI布局. ④.Android提供了一系列的View和ViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布 局.界 面元素绘制和用户交互等工作 ⑤.开发者还可以选择性地继承一些系统提供的View,来自

为什么我们可以在非UI线程中更新UI

尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究! 炮兵镇楼 看到这样的标题--估计N多人会说我是逗比----因为很多盆友在学习Android(特别是从4.0之后开始入门的)的时候都会常看见或听到别人说我们更新UI呢要在UI线程(或者说主线程)中去更新UI,不要在子线程中更新UI,而Android官方呢也建议我们不要在非UI线程直接更新UI,为什么呢?借助Android官方的一句话来说就是:

异步编程系列第04章 编写Async方法

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而

Android事件监听器Event Listener

在 Android 中,我们可以通过事件处理使UI与用户互动(UI Events). UI的用户事件处理,即View处理用户的操作,在应用程序中几乎不可避免.View是重要的类,它是与用户互动的前线:在Android框架的设计中,以事件监听器(event listener)的方式來处理UI的用户事件. Android框架提供了非常良好的UI事件处理机制.View是绘制UI的类,每个View对象都可以向Android框架注册一个事件监听器.每个事件监听器都包含一个回调函数(callback met

接口_ _接口回调机制

在Android中到处可见接口回调机制,尤其是UI事件处理方面,本文给大家介绍android接口回调机制,涉及到android接口回调相关知识,对本文感兴趣的朋友可以参考下本篇文章 在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的话你是无法和主函数同步的,也就是返回的数据是错误的,这是非常隐秘的一个错误.那有什么好的方法去实现数据的线性传递呢?先

Android 开发最佳实践

从Futurice公司Android开发者中学到的经验. 遵循以下准则,避免重复发明轮子.若您对开发iOS或Windows Phone 有兴趣, 请看iOS Good Practices 和 Windows client Good Practices 这两篇文章.摘要 ??? 使用 Gradle 和它推荐的工程结构??? 把密码和敏感数据放在gradle.properties??? 不要自己写 HTTP 客户端,使用Volley或OkHttp库??? 使用Jackson库解析JSON数据???

代码转载

研究了下 Android 可视组件的事件处理机制,本想用文字来阐述,但是发现太复杂,文字不太适合用来表达逻辑,遂改用程序代码来表述.读完本程序,你将会对 Android UI 事件处理机制有一个全新的认识.若能充分利用事件传递的这些特性,你写自定义组件就可以随心所欲,游刃有余了. ? 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

第二章 Android基本应用开发与解析

Andorid系统的应用开发有一个很大的特点是,通过布局XML文件来设计应用程序的界面.我们通过对Android系统资源的定义引用和对Viewd学习,以及了解各种布局和UI事件处理,从而写出有特色的应用程序 1.应用程序结构 src/目录: java原代码存放目录 gen/目录:自动生成目录,负责将图片.文字.以及布局资源自动生成一个在一个类文件中.目录中最重要的文件是R.java 这个文件由Android开发工具自动产生.Android工具会根据你放入res目录的XML界面文件.图标.常量.同

React Native是一套使用 React 构建 Native app 的编程框架

React Native at first sight what is React Native? 跟据官方的描述, React Native是一套使用 React 构建 Native app 的编程框架. 推出不久便引发了广泛关注, 这也得益于 JavaScript 开放而活跃的技术社区和 React Native 完备的技术体系支持. 本文试图概括的介绍 React Native. React Native 主要是一套 Runtime, 包括一套 React.js 库使得开发可以用 Reac

Runtime应用防止按钮连续点击 (转)

好久之前就看到过使用Runtime解决按钮的连续点击的问题,一直觉得没啥好记录的.刚好今天旁边同时碰到这个问题,看他们好捉急而且好像很难处理,于是我先自己看看… 前面自己也学习了很多Runtime的东西,一直觉得这个按钮连续点击其实很简单,就使用Runtime交换SEL实现IMP即可,但其实没明白解决这个问题的过程. 虽然直接可以在github搜到解决方法,但是还是有必要学习一下解决这个问题的一步一步的思路,给出这个作者的git: 1 https://github.com/strivever/U