iOS开发-17.触摸事件示例
来源:互联网 发布:安卓编程用什么语言 编辑:程序博客网 时间:2024/05/21 19:20
1.示例1(视图穿透效果)
#import "RedView.h"@interface RedView ()// 先写以下属性,从代码往storyboard中拖线,不然无法拿到btn属性@property (nonatomic, weak) IBOutlet UIButton *btn;@end@implementation RedView// 重写hitTest方法// 事件传递过程:事件->UIApplication->UIWindow->控制器的View->redView-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ // 将红色视图上的触摸点的位置转换为按钮上的位置 CGPoint btnP = [self convertPoint:point toView:self.btn]; // 判断转换后的点是否在按钮上 if([self.btn pointInside:btnP withEvent:event]){// 在的话,返回按钮为最合适的视图 return self.btn; }else{ //若是不在,就返回系统默认的方式 return [super hitTest:point withEvent:event]; }}// 重写touches方法,验证是否点击了按钮外的红色视图位置,红色视图响应点击事件-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"返回红色视图");}@end// 结果,点击按钮处,按钮能够响应(高亮)// 点击红色视图除按钮外的其他地方,打印返回红色视图// 点击白色视图处,控制器的View响应
2.示例2(按钮弹框的响应)
- 在控制器中实现按钮点击事件,创建子控件,并保存为按钮的属性
// 点击按钮弹出对话框- (IBAction)btnClick:(ZJButton *)sender { UIButton *chatBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [chatBtn setImage:[UIImage imageNamed:@"对话框"] forState:UIControlStateNormal]; [chatBtn setImage:[UIImage imageNamed:@"小孩"] forState:UIControlStateHighlighted]; // 根据图片自动计算尺寸 [chatBtn sizeToFit]; // 计算chatBtn的中心点 chatBtn.center = CGPointMake(chatBtn.bounds.size.width * 0.5, -chatBtn.bounds.size.height * 0.5); // 添加到按钮上 sender.chatBtn = chatBtn; [sender addSubview:chatBtn];}
- 自定义ZJButton控件继承UIButton
// 重写touches:move:方法,让按钮可以拖拽-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ // 获取触摸对象 UITouch *touch = [touches anyObject]; // 获取上一个触摸点 CGPoint preP = [touch previousLocationInView:self]; // 获取当前触摸点 CGPoint curP = [touch locationInView:self]; // 计算偏移位置 CGFloat offsetX = curP.x - preP.x; CGFloat offsetY = curP.y - preP.y; // 让按钮随触摸位置偏移 self.transform = CGAffineTransformTranslate(self.transform, offsetX, offsetY);}// 重写hitTest方法,让点击对话框视图时,返回弹框对象-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ // 转换当前触摸位置到对话框的位置 CGPoint curP = [self convertPoint:point toView:self.chatBtn]; // 判断是否在对话框上 if ([self.chatBtn pointInside:curP withEvent:event]) {// 在弹框视图上 return self.chatBtn; }else{// 不在弹框视图 return [super hitTest:point withEvent:event]; }}
0 0
- iOS开发-17.触摸事件示例
- IOS开发:手势触摸事件
- IOS开发概述-11.触摸事件处理概述
- iOS开发 - 响应者链触摸事件
- iOS开发 -- 事件处理(触摸,晃动)
- ios开发系列之触摸事件
- iOS开发:UITouch控件与触摸事件
- iOS开发系列之触摸事件
- iOS开发笔记-触摸事件与手势
- 《iOS开发笔记-触摸事件与手势》
- iOS开发-- iOS触摸事件、手势识别、摇晃事件、耳机线控
- ios触摸事件四:触摸
- iOS开发--触摸事件、手势识别、摇晃事件、耳机线控
- ios 进阶 -- 触摸事件
- IOS触摸事件
- iOS 触摸事件处理
- ios touches、触摸事件
- IOS-触摸事件
- SPOJ PTO7J Query on a tree III(dfs序+主席树)
- 优先队列C语言实现
- eclipse导入到android studio的正确姿势
- 20150803 SEO搜索引擎优化
- 将工程在Xcode6中打包成测试的ipa包
- iOS开发-17.触摸事件示例
- Serv-U使用方法及应用技巧(一)
- H.264码流的RTP打包格式[FU-A]
- dom4j将xml转换成对象
- 浏览器省流量功能手札
- 3D图形渲染管线
- 使用 Socket 通信实现 FTP 客户端程序
- RUP、CSE、CMMI简要分析
- 数据结构之链表、栈和队列 java代码实现