2.0 触摸事件

UIView不接收触摸事件的三种情况:



1、不接收用户交互

userInteractionEnabled = NO


2、隐藏

hidden = YES


3、透明

alpha = 0.0 ~ 0.01

4. 如果子视图的位置超出了父视图的有效范围, 那么子视图也是无法与用户交互的, 即使设置了父视图的 clipsToBounds = NO, 可以看懂, 但是也是无法与用户交互的

提示:UIImageView的userInteractionEnabled默认就是NO,因此UIImageView以及它的子控件默认是不能接收触摸事件的

触摸事件中的方法:


 1 // 手指按下的时候调用
 2 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
 3
 4 // 手指移动的时候调用
 5 - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullableUIEvent *)event;
 6
 7 // 手指抬起的时候调用
 8 - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullableUIEvent *)event;
 9
10 // 取消(非正常离开屏幕,意外中断事件)
11 - (void)touchesCancelled:(nullableNSSet<UITouch *> *)touches withEvent:(nullableUIEvent *)event;
目前还没有找到相关使用方法,如果有知道的朋友请联系我,非常感激。。。1 // 3D Touch相关方法,当前触摸对象估计的触摸特性,返回值是UITouchPropertyie
2 - (void)touchesEstimatedPropertiesUpdated:(NSSet * _Nonnull)touches NS_AVAILABLE_IOS(9_1);

相关代码:

 1 #import “TDView.h"
 2
 3 @implementation TDView
 4
 5 // 手指触摸到这个view的时候调用
 6 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 7
 8   UITouch *t = touches.anyObject;
 9
10   NSLog(@"%ld", t.tapCount); // 点击这个响应者对象的次数
11
12   NSLog(@"%@", t.window); // 点击这个响应者对象所在的window
13   NSLog(@"%@", self.window);
14   NSLog(@"%@", [UIApplication sharedApplication].keyWindow);
15
16   NSLog(@"%s", __func__);
17 }
18
19 // 手指在这个view上移动的时候调用
20 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
21   // 获取触摸对象
22   UITouch *t = touches.anyObject;
23
24   // 获取上一个点的位置
25   CGPoint lastP = [t previousLocationInView:self.superview];
26   NSLog(@"%@----上一个点的位置", NSStringFromCGPoint(lastP));
27
28   // 获取当前点的位置
29   CGPoint p = [t locationInView:self.superview];
30   NSLog(@"%@----当前点的位置", NSStringFromCGPoint(p));
31 }
32
33 // 手指离开这个view的时候调用
34 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
35       NSLog(@"%s", __func__);
36 }
37
38 // 取消(非正常离开屏幕)
39 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
40       NSLog(@"%s", __func__);
41 }
42
43 @end

补充:关于NSSet和 NSArray



 

如何访问

如何取值

如何遍历

效率

                   应用场景

NSSet

集合


无序访问,不重复的。

存放到 NSSet 中的内容并不会排序与添加顺序也没有关系


取集合里面任意一个元素 anyObject

通过 anyObject 来访问单个元素

for in  效率高
(1)比如重用 Cell 的时候, 从缓存池中随便获取一个就可以了, 无需按照指定顺序来获取

(2)当需要把数据存放到一个集合中, 然后判断集合中是否有某个对象的时候

NSArray

数组


有序访问,可以有重复对象。

对象的顺序是按照添加的顺序来保存的

通过下标来访问


for

forin

 

当需要把数据存放到一个集合中, 然后判断集合中是否有某个对象的时候


如有疑问,请发送邮件至 [email protected] 联系我。

By:蓝田(Loto)

时间: 2024-10-25 21:39:05

2.0 触摸事件的相关文章

Android6.0触摸事件分发机制解读

本篇博文是Android触摸事件分发机制系列博文的第一篇,带领大家从全局掌握Android触摸事件分发机制.特别声明的是,本源码解读是基于最新的Android6.0版本. (一)Android6.0源码解读之View点击事件分发机制 (二)Android6.0源码解读之ViewGroup点击事件分发机制 (三)Android6.0源码解读之Activity点击事件分发机制 为什么要解读触摸事件分发机制 1.掌握View事件分发机制 2.为解决View滑动冲突提供理论支持 3.了解Android最

[iOS UI进阶 - 3.0] 触摸事件的基本处理

A.需要掌握和练习的 1.介绍事件类型2.通过按钮的事件处理引出view的事件处理3.响应者对象 --> UIResponder --> UIView4.view的拖拽* 实现触摸方法,打印查看* 介绍touches和UIEvent参数* 扩展:点哪去哪5.涂鸦6.手势解锁7.事件的产生和传递8.响应者链条 9.手势 B.概念 1.iOS有3种主要事件 触摸事件 加速计事件 远程控制事件 2.响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事

Cocos2d-x3.0 触摸事件

TouchableSpriteTest auto winSize = Director::getInstance()->getWinSize(); Point origin = Director::getInstance()->getVisibleOrigin(); auto containerForSprite1 = Node::create(); auto sprite1 = Sprite::create("CyanSquare.png"); sprite1->s

cocos3.0通过精灵控制精灵的触摸事件的实现

auto listener = EventListenerTouchOneByOne::create(); listener->setSwallowTouches(true); auto sprite = this->getChildByTag(virTag)->getChildByTag(jumpTag); listener->onTouchBegan = CC_CALLBACK_2(MLayer::onTouchBegan, this); listener->onTouc

屏幕触摸事件监听,判断上下左右的操作行为,判断方法缩小的操作行为

在手机屏幕上能够实现的人机交互行为,大致包括点击按钮,拉动滑动块,物体缩放,上下左右拉动等. 手机屏幕触摸事件的监听方法: 1.首先要设置一块布局区域,frameLayout/LinearLayout等都可以,并为布局设置id: 2.在Activity中声明相应的布局类型,并通过findViewById()方法找到该布局,然后为该布局区域设置setOnTouchListener()方法,就能监听在相应屏幕触摸操作 实现屏幕触摸事件监听的代码: private LinearLayout Land;

5.触摸事件、侧滑菜单

触摸事件 侧滑菜单--- github-SlidingMenu 1.在ViewGroup中,让自己内容移动有以下三个方法个方法: layout(l,t,r,b); offsetTopAndBottom(offset)和offsetLeftAndRight(offset); scrollTo和scrollBy方法; 注意:滚动的并不是viewgroup内容本身,而是它的矩形边框 它是瞬间移动的 2.在自定义ViewGroup中一般不需要去实现onMeasure, 我们去实现系统已有的ViewGro

触摸事件

1.1.触摸事件(必会) ?  拖拽 ?  XML配置 <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="matrix" android:src="@drawable/image" /> ? 

移动端常用触摸事件以及常用坐标

一.触摸事件 基本事件: touchstart   //手指刚接触屏幕时触发 touchmove    //手指在屏幕上移动时触发 touchend     //手指从屏幕上移开时触发 下面这个比较少用: touchcancel  //触摸过程被系统取消时触发 每个事件都有以下列表,比如touchend的targetTouches当然是 0 咯: touches         //位于屏幕上的所有手指的列表 targetTouches   //位于该元素上的所有手指的列表 changedTou

深入了解触摸事件的分发

1. 触摸动作及事件序列 (1)触摸事件的动作 触摸动作一共有三种:ACTION_DOWN.ACTION_MOVE.ACTION_UP.当用户手指接触屏幕时,便产生一个动作为ACTION_DOWN的触摸事件,此时若用户的手指立即离开屏幕,会产生一个动作为ACTION_UP的触摸事件:若用户手指接触屏幕后继续滑动,当滑动距离超过了系统中预定义的距离常数,则产生一个动作为ACTION_MOVE的触摸事件,系统中预定义的用来判断用户手指在屏幕上的滑动是否是一个ACTION_MOVE动作的这个距离常量叫