UI07_Touch

2024-01-19 07:48
文章标签 touch ui07

本文主要是介绍UI07_Touch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建一个根视图控制器

根视图控制器

@implementation RootViewController#warning 在继承和使用父类的方法的时候,一般会先用super去调用父类相应的方法,目的是为了保证方法的原功能不变,在此基础上再添加我们自己的功能.(一).触摸
1.触摸开始.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesBegan:touches withEvent:event];NSLog(@"触摸开始");
}2.触摸移动.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesMoved:touches withEvent:event];NSLog(@"触摸移动");
}3.触摸结束.
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesEnded:touches withEvent:event];NSLog(@"触摸结束");
}4.触摸取消(当来电话时,触摸自动取消).
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesCancelled:touches withEvent:event];NSLog(@"触摸取消");
}

触摸结果

(二).摇一摇
1.晃动开始.
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {[super motionBegan:motion withEvent:event];NSLog(@"晃动开始!~");// 设置随机背景颜色.(模拟器 -> Hardware -> Shake),模拟摇一摇改变背景颜色.self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 / 255.0 blue:arc4random() % 256 / 255.0 alpha:1];
}2.晃动结束.
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {[super motionEnded:motion withEvent:event];NSLog(@"晃动结束!~");
}3.晃动取消.
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {[super motionCancelled:motion withEvent:event];NSLog(@"晃动取消!~");
}

模拟晃动结果

(三).在根视图控制器上移动视图.
新建MyView类,继承于UIView
MyView.m
#import "MyView.h"
@interface MyView ()1.创建一个属性,记录起点.
@property(nonatomic, assign)CGPoint startPoint;
@end
@implementation MyView// 开始
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesBegan:touches withEvent:event];2.获取触摸对象.UITouch *touch = [touches anyObject];3.根据触摸对象,获取开始的坐标位置.self.startPoint = [touch locationInView:self];
}// 移动
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesMoved:touches withEvent:event];4.获取触摸对象.UITouch *touch = [touches anyObject];5.获取移动的坐标位置.CGPoint newPoint = [touch locationInView:self];6.计算两个坐标产生的变化.CGFloat dx = newPoint.x - self.startPoint.x;CGFloat dy = newPoint.y - self.startPoint.y;7.改变自身变化.self.center = CGPointMake(self.center.x + dx, self.center.y + dy);}// 结束
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {[super touchesEnded:touches withEvent:event];
}// 回到RootViewController中创建一个视图.
RootViewController.m
- (void)viewDidLoad {// 为什么要单独创建一个类写方法的实现,然后再回到根视图控制器中创建视图,因为代码模块化,便于管理.MyView *firstView = [[MyView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];firstView.backgroundColor = [UIColor cyanColor];[self.view addSubview:firstView];[firstView release];}

移动过程

(四).响应链问题
在根视图控制器中创建一个UIView和两个UIButton
RootViewController.m
- (void)viewDidLoad {1.创建一个视图.UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];firstView.backgroundColor = [UIColor cyanColor];[self.view addSubview:firstView];[firstView release];2.创建第一个按钮.UIButton *firstButton = [UIButton buttonWithType:UIButtonTypeSystem];firstButton.frame = CGRectMake(0, 0, 100, 100);firstButton.backgroundColor = [UIColor redColor];[firstView addSubview:firstButton];[firstButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];3.创建第二个按钮.UIButton *secondButton = [UIButton buttonWithType:UIButtonTypeSystem];secondButton.frame = CGRectMake(150, 150, 100, 100);secondButton.backgroundColor = [UIColor blueColor];[firstView addSubview:secondButton];[secondButton addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
}4.使这两个按钮同时绑定同一个方法.
- (void)click:(UIButton *)button {NSLog(@"****************");
}我们可以发现当鼠标点击按钮与视图的重合区域时,会触发click方法,其他不会触发,这就是响应链的问题.

这里写图片描述

这篇关于UI07_Touch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621712

相关文章

JS基础-ClassList -移动端插件的引入-touch事件-sessionStorage 和 localStorage

目录 1.classList属性 添加类 删除类 切换类 检查类是否存在 替换类 移动端touch事件 2.消除点击延迟 Fastclick插件的引入 引入FastClick 初始化 3.Swiper插件的引入和使用 通过CDN引入 通过npm安装(vue中建议)  使用SwiperHTML结构 初始化Swiper 4.zyMedia插件简介 4.1下载与引

Geomagic Touch触觉力反馈设备,在虚拟环境中提供真实的反馈力

在虚拟现实(VR)和增强现实(AR)技术日益成熟的今天,为用户提供更加真实、沉浸的交互体验成为了技术发展的重要方向。Geomagic Touch触觉力反馈设备凭借其卓越的性能和广泛的应用领域,成为了这一领域中的佼佼者。本文将探讨Geomagic Touch如何在虚拟环境中提供真实的反馈力,为用户带来前所未有的体验。 卓越的力反馈技术 Geomagic Touch(原Sensable Phant

搜维尔科技:使用Geomagic Touch X 对机械臂进行远程遥操作

使用Geomagic Touch X对机械臂进行远程遥操作 搜维尔科技:使用Geomagic Touch X 对机械臂进行远程遥操作

bug系列-------i2c bus挂了导致touch无反应

今天看到一个现象,偶發玩遊戲後手動直接suspend後再resume發生system hang住,只剩下power button有作用。  看了一下log:比较可疑的如下  i2c-msm-v2 78b6000.i2c: NACK: slave not responding, ensure its powered, I2C transfer failed, : msgs(n:2 cu

touch的双击唤醒如何实现

现在很多手机具有双击唤醒屏幕功能,那么这个功能是如何实现的呢,在ft5x06这款touchscreen上的实现方式如下 首先在touch的driver里会针对屏幕关闭时做特殊处理 在static irqreturn_t ftxxxx_ts_interrupt(int irq, void *dev_id) { u8 state;        i2c_smbus_read_i2c_

Android touch冲突解决小记

1.ScrollView嵌套ViewPager ViewPager横向滑动的时候容易变成上下滑动,感觉体验不好,重写ViewPager的onTouchEvent事件,当ViewPager横向滚动的距离大于纵向距离时,设置父容器不拦截滚动事件getParent().requestDisallowInterceptTouchEvent(true); MyViewPager.java源码 publ

polarctf靶场[WEB]Don‘t touch me、机器人、uploader、扫扫看

目录 [web]Don't touch me 考点:查看源代码、前端 [web]机器人 考点:robot协议 工具:御剑,kali dirsearch [web]覆盖 考点:@parse_str覆盖 [web]扫扫看 考点:目录扫描 工具:御剑、kali dirsearch [web]Don't touch me 考点:查看源代码、前端 打开网页,叫我们找

HTML5 Mobile App移动框架Sencha Touch实战OA系统开发(PhoneGap打包应用)

我这里有一套课程和大家分享,我的qq是2059055336,有兴趣的朋友可以和我聊天。 课程简介:          移动互联网开发是2013年最热门的技术,通过北风网老师《使用HTML5技术进行移动OA的开发》课程的学习,普通WEB程序员可以在最快的时间内学会使用Sench Touch开发移动应用软件,成为一位完全精通HTML5开发的高端人才。 HTML 5是近十

hdu5361(2015多校6)--In Touch(变形的dijkstra)

题目链接:点击打开链接 题目大意:给出一个n个数的序列,标号为1到n,对于第i个数,它可以移动到距离i为[ li,ri ]的位置,花费为c[i],输入三行,第一行l[i],第二行r[i],第三行c[i],现在问对于第一个数来说,它移动到第i个位置的最小花费。(1<=i<=n) 这是一个每个点可以移动到一段中任意一个点,并且花费一样,这样就不适用与已有的四种最短路,但是可以对dijkstra进行

cocos2dx:模拟touch事件

最近终于开始学习cocos2d-x引擎了,Cocos2d-x作为一个手机游戏引擎,屏幕触摸事件(touch)的处理一定时非常重要的。上个礼拜,我就开始琢磨,如何在telnet终端通过CCConsole命令模拟touch事件? 要在引擎里模拟touch事件,就先要弄清楚引擎是如何处理touch事件的。就以往的经验,touch事件的处理是比较复杂的,所以千万不能先看代码或者查资料,要先想清楚