1.ios当中常见的事件?
        触摸事件
        加速计事件
        远程控制事件
2.什么是响应者对象?
    继承了UIResponds的对象我们称它为响应者对象 UIApplication、UIViewController、UIView都继承 UIResponder,因此它们都是响应者对象,都能够接收并处理事件.
3.为什么说继承了UIResponder就能够处理事件?
原因:因为UIResponder内部提供了以下方法来处理事件.
    如触摸事件会调用以下方法:
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
    
    加速计事件会调用:
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;

  远程控制事件会调 :
    - (void)remoteControlReceivedWithEvent:(UIEvent *)event;
    
4.如何监听UIView的触摸事件?

想要监听UIViiew的触摸事件, 先第一步要自定义UIView, 因为只有实现了UIResponder的事件方法才能够监听事件.
    UIView的触摸事件主要有:
    1)单根或者多根手指开始触摸view,系统会自动调用view的下方法.
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
     2)单根或者多根手指在view上移动时,系统会自动调用view的下列方法 (随着手指的移动,会持续调用该方法,也就是说这个方法会调用很多次)
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
     3)单根或者多根手指离开view,系统会自动调用view的下列方法
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    
5.UIView拖拽思路?
    1.定义UIView,实现监听方法.
    2.确定在TouchMove方法当中进行操作,因为用户手指在视图上移动的时候才需要移动视图。
    3.获取当前手指的位置和上一个手指的位置.
    4.当前视图的位置 = 上一次视图的位置 - 手指的偏移量

6.实现关键代码:
    当手指在屏幕上移动时持续调用
    NSSet: 它的元素都是无序的.
    NSArray: 它的是有顺序的.
    -(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    1.获取手指的对象
    UITouch *touch = [touches anyObject];
    2.获取当前手指所在的点.
    CGPoint curP = [touch locationInView:self];
    3.获取手指的上一个点.
    CGPoint preP = [touch previousLocationInView:self];
    //X轴方向偏移量
    CGFloat offsetX = curP.x - preP.x;
    //Y轴方向偏移量
    CGFloat offsetY = curP.y - preP.y;
    CGAffineTransformMakeTranslation:
    //会清空上一次的形变,相对初始位置进行形变.
    self.transform = CGAffineTransformMakeTranslation(offsetX,0);
    //相对上一次的位置进行形变.
    self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);
    }

01-事件处理简介/UIView拖拽的更多相关文章

  1. IOS第15天(1,事件处理View的拖拽)

    *******view 一些方法 #import "HMView.h" @implementation HMView // 一个完整的触摸过程 // touchesBegan -& ...

  2. ios开发事件处理之:一:UIView的拖拽

    1.ios当中常⽤的事件?  触摸事件 ,加速计事件 ,远程控制事件 2.什么是响应者对象? 继承了UIResponds的对象我们称它为响应者对象 UIApplication.UIViewContro ...

  3. H5 拖拽操作

    H5 拖拽操作 前言 在原生H5中,可以通过提供的api实现在网页内元素的拖拽操作.相对于传统的写法更加的简单. 而想要实现拖拽,主要需要进行两个方面的工作,第一是给元素设置draggable='tr ...

  4. iOS边练边学--触摸事件以及能够拖拽的UIView的练习

    一.用户在使用APP的过程中,会产生各种各样的事件.iOS中的事件可以分为3大类型: 二.响应者对象 在iOS中只有继承了了UIResponder的对象才能接受并处理事件,这样的对象称之为“响应者对象 ...

  5. [翻译] UIView-draggable 可拖拽的UIView

    UIView-draggable 可拖拽的UIView https://github.com/andreamazz/UIView-draggable UIView category that adds ...

  6. HTML5 drag & drop 拖拽与拖放简介

    DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer. draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如 ...

  7. NGUI拖拽简介

    挂上UIDragDropItem就可以实现拖拽,按钮监听Drop消息即可实现对拖放的监听. UIDragDropItem有一个Clone On Drag选项,勾上可以克隆,但会被ScrollView遮 ...

  8. android开发游记:SpringView 下拉刷新的高效解决方式,定制你自己风格的拖拽页面

    关于下拉刷新/上拉载入很多其它的解决方式网上已经有非常多了,浏览了眼下主流的下拉控件比方PullToRefresh库等.第一:大多数实现库都难以进行动画和样式的自己定义. 第二:不能非常好的兼容多种滚 ...

  9. 可拖拽div

    在开发的时候需要一个可拖拽的prompt弹框.自己写了一个,大概思路为: 1.获取鼠标左键按下移动的起点坐标(x,y). 2.获取div的left和top属性. 3.得到鼠标坐标到左上角的距离(x-t ...

随机推荐

  1. WCF学习心得------(三)配置服务

    配置服务 配置服务概述 在设计和实现服务协定后,便可以进行服务的配置.在其中可以定义和自定义如何向客户段公开服务,包括指定可以找到服务的地址,服务用于发送和接受消息的传输和消息编码,以及服务需要的安全 ...

  2. HTML之布局position理解

    HTML中的布局,一个比较难以理解的概念,就是position了,W3C上的解释,position有如下几种: 1. static,默认值,也就是在样式中不指定position 2. fixed 3. ...

  3. HTML 图像

    通过使用 HTML,可以在文档中显示图像. 实例 插入图像 本例演示如何在网页中显示图像. 从不同的位置插入图片 本例演示如何将其他文件夹或服务器的图片显示到网页中. (可以在本页底端找到更多实例.) ...

  4. Java文件读写

    import java.io.*; public class Study { public static void main(String[] args) { try { String strPath ...

  5. 【jmeter】搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)

    一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jme ...

  6. SSH_框架整合5--验证用户名是否可用

    SSH_框架整合5--验证用户名是否可用 1 emp-input.jsp中编写ajax验证用户名是否可用: <script type="text/javascript" SR ...

  7. (转)关于List中FindAll用法的一些简单示例

    本文转载自:http://blog.csdn.net/luoxufeng/article/details/6925982 using System; using System.Collections. ...

  8. linux 屏幕亮度调节

    Brightness sudo gedit  /etc/default/grub find this  line  :   GRUB_CMSLINE_LINUX_DEFAULT="quiet ...

  9. autotool相关:AC_ARG_ENABLE的用法

    你可以使用AC_ARG_ENABLE来定义一个命令行选项.这个宏接受三个参数1.flag_base2.该选项的帮助说明3.当configure带该选项运行时所执行的代码,代码中的命令行变量enable ...

  10. PLSQL_基础系列07_插入方式Pivoting / Unconditional / Conditional ALL / Conditional FIRST INSERT(案例)

    2014-12-08 Created By BaoXinjian