处理多层级事件传递(UIResponder拓展)
2016-07-15 14:49
323 查看
1、使用场景
多层级的事件传递与响应
编辑
2、参数说明
eventName:通过这个key对事件进行识别;
userInfo:响应事件需要的数据,类型可根据需要来写(model或NSDictionary等等)
编辑
3、使用方法
给UIResponder添加一个自定义事件
当事件发生,沿响应者链,找到当前view的nextResponder(即:superView)对应的view(或viewController),找到这个view后先判断能不能响应这个事件,如果不能那就继续找nextResponder,直到viewController接收该事件。
![](http://upload-images.jianshu.io/upload_images/2461685-4496d107d046917a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在当前view响应点击事件的方法中,将事件传递出去
例:
![](http://upload-images.jianshu.io/upload_images/2461685-3029ef6d0e72c196.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注:每一个key(即:eventName),可定义在当前view中,以便接收事件的superView使用
在对应controller中统一接收事件
例:
![](http://upload-images.jianshu.io/upload_images/2461685-39d88f63b95dcceb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在对应control中实现具体事件
例:
![](http://upload-images.jianshu.io/upload_images/2461685-9e6a73758fa9ba75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4、优缺点
优点:统一处理多层级事件的传递与相应,避免了逻辑混乱的多层代理,代码简洁,结构简单;
缺点:对于层级结构简单的情况,相比抛出代理而言,逻辑清晰度稍差。
多层级的事件传递与响应
编辑
2、参数说明
eventName:通过这个key对事件进行识别;
userInfo:响应事件需要的数据,类型可根据需要来写(model或NSDictionary等等)
编辑
3、使用方法
给UIResponder添加一个自定义事件
当事件发生,沿响应者链,找到当前view的nextResponder(即:superView)对应的view(或viewController),找到这个view后先判断能不能响应这个事件,如果不能那就继续找nextResponder,直到viewController接收该事件。
![](http://upload-images.jianshu.io/upload_images/2461685-4496d107d046917a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在当前view响应点击事件的方法中,将事件传递出去
例:
![](http://upload-images.jianshu.io/upload_images/2461685-3029ef6d0e72c196.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
注:每一个key(即:eventName),可定义在当前view中,以便接收事件的superView使用
在对应controller中统一接收事件
例:
![](http://upload-images.jianshu.io/upload_images/2461685-39d88f63b95dcceb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在对应control中实现具体事件
例:
![](http://upload-images.jianshu.io/upload_images/2461685-9e6a73758fa9ba75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4、优缺点
优点:统一处理多层级事件的传递与相应,避免了逻辑混乱的多层代理,代码简洁,结构简单;
缺点:对于层级结构简单的情况,相比抛出代理而言,逻辑清晰度稍差。
相关文章推荐
- UITableView性能优化---自动计算cell高度(FDTemplateLayoutCell)
- String,StringBuffer与StringBuilder的区别??
- 最近研究了一下UE4引擎就发个记录博客吧
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- 解决UISlider滑块不灵敏
- iOS开发从入门到精通--UIButton事件处理
- UITableView ,UICollectionView,视图刷新的时候用
- HDU 4632 Palindrome subsequence (区间DP)
- 将UEditor的图片批量上传抠出来单独使用
- java GUI基础
- 2016.03.31,英语,《Vocabulary Builder》Unit 08
- SoapUI进行REST请求,POST方法提交到数据库的数据乱码问题
- 未找到与约束 ContractName Microsoft.VisualStudio.Text.ITextBufferFactoryService RequiredTypeIdentity Microsoft.VisualStudio.Text.ITextBufferFactoryService
- mui记录
- burpsuite,对web网站进行Intruder攻击
- 自定义UIMenuController
- Request is not available in this context
- AbstractQueuedSynchronized源码探索
- iOS进阶 - UIDynamic
- stringbuffer与stringbuilder的区别