ios 中触摸事件

我们知道耦合是衡量模块和模块之间关联程度的指标,“高内聚, 低耦合”是面对对象编程的核心思想,为了在触摸事件中降低耦合度,我们一般采用两种方式,即target ……action设计模式和delegate设计模式

target ……action设计模式

(声明类)
声明一个方法
- (void)addTarget: (id)target action:(SEL)action;

(实现类)
/*
ActionView 是一个自定义视图,相当于一个封装好的类,一个封装好的类,无论有什么新的需求,都不需要修改原有类的内部代码

现在的写法:不灵活 ActionView 接受到触摸之后,有自身去处理触摸事件,所以每当外界有新的变化,都要修改自身的内部代码。ActionView 和 响应的事件就绑定一起了(耦合性增加)
*/

通过target……action 设计模式,将事件处理交给外界其他对象来做,而ActionView自身就负责通知其他对象处理即可。降低程序的耦合性,提高了程序的内聚性。(高内聚,低耦合)

实现方法
- (void)addTarget: (id)target action:(SEL)action {
_target = target;//存储目标对象,提供给其他方法使用
_action = action;//存储目标行为
}
(这时要注意要在延展中声明属性 {
id _target;//存储指定的外界对象
SEL _action;//存储对应的action任务
}

第二步
重写接触时实现事件 注意:(一定要理解清这一步)
-(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event {
//当ActionView接受到触摸事件时自身不处理,自身不处理,通知target来处理
//让target来执行action的行为
//self –ActionView视图对象
[_target performSelector:_action withObject:self];
}

//在视图控制器内去完成要求
设置一个视图并定义为控制器根视图
(例如 在触摸时改变自身颜色)
//触摸时改变自身颜色
//self –当前视图控制器的对象
[redview addTarget:self action:@selector(changeSelfColor:)];

//在视图控制器内去实现changeSelfColor:方法

delegate设计模式

使用delegate 来进行解耦。让代理完成TouchView的触摸事件的响应
在.h文件中
第一步制定协议 这个协议的属性用 @optional
- (void)touchBeganWithView: (TouchView *)view;//触摸时 对应touchBegan……
- (void)touchEndedWithView: (TouchView *)view;//触摸结束时
- (void)touchMovedVithView: (TouchView *)view;//触摸移动时 对应touchMoved……
- (void)touchCancelledWithView: (TouchView *)view;//触摸中断时,对应touchCancelled ……

第二步设置代理属性
@property (nonatomic, assign) iddelegate;

//第三步 在视图控制器中制定代理对象
Tv.delegate = self;

//第四步 代理对象所在的类服从协议

//第五步 代理对象所在的类实现协议中的方法

//第六步 (在.m 文件)通知代理对象去执行方法

例如: -(void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event {
//如果代理对象存在 且实现了对应方法
if (self.delegate && [self.delegate respondsToSelector:@selector(touchBeganWithView:)]) {
//代理对象执行对应方法
[_delegate touchBeganWithView:self];
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值