target - action设计模式的思想
2014-08-27 08:50
204 查看
不同的实例点击效果不同:点击改变自身颜色,点击改变父视图颜色,点击修改视图位置.以上效果可由target - action设计模式实现.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor =
[UIColor yellowColor];
CustomView *greenView = [[CustomView alloc] initWithFrame:CGRectMake(20, 40, 280, 100)];
greenView.backgroundColor = [UIColor greenColor];
[greenView addTarget:self acton:@selector(changeColor:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:greenView];
[greenView release];
CustomView *redView = [[CustomView alloc] initWithFrame:CGRectMake(20, 200, 280, 100)];
redView.backgroundColor = [UIColor redColor];
[redView addTarget:self acton:@selector(changeSuperviewColor:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:redView];
[redView release];
CustomView *blueView = [[CustomView alloc] initWithFrame:CGRectMake(20, 360, 280, 100)];
blueView.backgroundColor = [UIColor blueColor];
[blueView addTarget:self acton:@selector(changelocation:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:blueView];
[blueView release];
}
- (void)changeColor:(CustomView *)view
{
view.backgroundColor = [UIColor randomColor];
}
- (void)changeSuperviewColor:(CustomView *)view
{
view.superview.backgroundColor =
[UIColor randomColor];
}
- (void)changelocation:(CustomView *)view
{
view.center = CGPointMake(arc4random()
% 200 + 100, arc4random()
% 400 + 100);
}
@interface CustomView ()
{
id _target; //目标
SEL _action; //行为
UIControlEvents _controlEvents;
}
@end
//为当前视图指定当视图接收到响应事件之后,由target来通过action方法进行响应.
- (void)addTarget:(id)target
acton:(SEL)action forControlEvents:(UIControlEvents)controlEvents
{
//利用实例变量存储外界传入的参数,方便在其他方法中使用
_target = target;
_action = action;
_controlEvents = controlEvents;
}
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event
{
if (UIControlEventTouchDown == _controlEvents)
{
//当当前视图接收到触摸事件之后,交由target去处理
[_target performSelector:_action withObject:self];
}
}
- (void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event
{
if (UIControlEventTouchUpInside == _controlEvents)
{
[_target performSelector:_action withObject:self];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor =
[UIColor yellowColor];
CustomView *greenView = [[CustomView alloc] initWithFrame:CGRectMake(20, 40, 280, 100)];
greenView.backgroundColor = [UIColor greenColor];
[greenView addTarget:self acton:@selector(changeColor:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:greenView];
[greenView release];
CustomView *redView = [[CustomView alloc] initWithFrame:CGRectMake(20, 200, 280, 100)];
redView.backgroundColor = [UIColor redColor];
[redView addTarget:self acton:@selector(changeSuperviewColor:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:redView];
[redView release];
CustomView *blueView = [[CustomView alloc] initWithFrame:CGRectMake(20, 360, 280, 100)];
blueView.backgroundColor = [UIColor blueColor];
[blueView addTarget:self acton:@selector(changelocation:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:blueView];
[blueView release];
}
- (void)changeColor:(CustomView *)view
{
view.backgroundColor = [UIColor randomColor];
}
- (void)changeSuperviewColor:(CustomView *)view
{
view.superview.backgroundColor =
[UIColor randomColor];
}
- (void)changelocation:(CustomView *)view
{
view.center = CGPointMake(arc4random()
% 200 + 100, arc4random()
% 400 + 100);
}
@interface CustomView ()
{
id _target; //目标
SEL _action; //行为
UIControlEvents _controlEvents;
}
@end
//为当前视图指定当视图接收到响应事件之后,由target来通过action方法进行响应.
- (void)addTarget:(id)target
acton:(SEL)action forControlEvents:(UIControlEvents)controlEvents
{
//利用实例变量存储外界传入的参数,方便在其他方法中使用
_target = target;
_action = action;
_controlEvents = controlEvents;
}
- (void)touchesBegan:(NSSet *)touches
withEvent:(UIEvent *)event
{
if (UIControlEventTouchDown == _controlEvents)
{
//当当前视图接收到触摸事件之后,交由target去处理
[_target performSelector:_action withObject:self];
}
}
- (void)touchesEnded:(NSSet *)touches
withEvent:(UIEvent *)event
{
if (UIControlEventTouchUpInside == _controlEvents)
{
[_target performSelector:_action withObject:self];
}
}
相关文章推荐
- UI笔记_target...action设计模式
- Target_Action 设计模式
- UI:target-action设计模式、手势识别器
- UI target/action设计模式
- Target-Action 设计模式
- target-action设计模式--主要为Button的方法重写
- target - action 设计模式
- iOS设计模式之Target-Action
- iOS 对于Target-Action设计模式的理解
- UI - Target-Action设计模式
- Target- Action设计模式
- Target/Action 设计模式
- UI基础:target...action设计模式,手势识别器.UIimageview
- ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)
- target/action 设计模式
- UI 04 target...action 设计模式
- iOS如何实现传值---target-action设计模式
- target --action设计模式,以及delegate设计模式
- target-action设计模式
- 用三层架构与设计模式思想部署企业级数据库业务系统开发