当一个子view需要接收点击事件,而父view也需要接收点击事件, 如何做?
2015-09-15 21:26
441 查看
直接调用mysubview.superView即可, 这样做也确实是可以做到,但有时子view是不一定知道有这个特定的父view的存在的,如动态添加子view。
所以这里就可以用到消息响应链拉技术。
下面要做的也就是,让子view接收这些事件后,同时把这些事件继续向上传,会一直传到UIApplication为止。 而在传的过程中,如果子view接收了这些事件,那么事件会自然终止,我们现在可以做的是同时让子view接收事件,而且还让事件不终止,并继续向上传。
这里可以做子view自己想做的事,做完后,事件继续上传,就可以让其父类,甚至父viewcontroller获取到这个事件了
重写UIView类中的4个方法
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[[self nextResponder] touchesBegan:touches withEvent:event];
}
所以这里就可以用到消息响应链拉技术。
下面要做的也就是,让子view接收这些事件后,同时把这些事件继续向上传,会一直传到UIApplication为止。 而在传的过程中,如果子view接收了这些事件,那么事件会自然终止,我们现在可以做的是同时让子view接收事件,而且还让事件不终止,并继续向上传。
这里可以做子view自己想做的事,做完后,事件继续上传,就可以让其父类,甚至父viewcontroller获取到这个事件了
重写UIView类中的4个方法
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[[self nextResponder] touchesBegan:touches withEvent:event];
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ [[self nextResponder] touchesCancelled:touches withEvent:event]; }
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ [[self nextResponder] touchesEnded:touches withEvent:event]; }
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ [[self nextResponder] touchesMoved:touches withEvent:event]; }
相关文章推荐
- Part 17 Temporary tables in SQL Server
- 初识 SyntaxHighlighter 代码高亮控件
- 表情列表发送功能
- 时间复杂度和空间复杂度
- gcc与g++
- stringToTime && timeToString
- linux下的网络命令netstat
- 如何创建magento模块z之Hello World例子(转)
- 白驹过隙之大一总结第二话
- Aizu 2538 Stack Maze【记忆化搜索】
- 谈谈最近OLCS项目的开发感受
- 四种解析方法
- ldd获得可执行程序的所有库并输出到指定目录
- PHP基础------引用传值
- 队列-java代码
- Oracle插入数据中包含【&】需要转移
- 各种包管理器
- poj1321棋盘问题
- SoundPool(播放小音频),MediaRecorder(录音),视频播放,开启摄像头
- android学习笔记(三)——Activity