IOS-target-action: ios-target-action
IOS-target-action Design Mode
The essence of the target-action design pattern is to call the target action Method for events generated in the host.
Next we use a UIView to implement the UIButton click event.
@interface CustomButton : UIView-(void)addCustomButton:(id)target andSelector:(SEL)action;@end@implementation CustomButton{ id _target; SEL _action;}-(void)addCustomButton:(id)target andSelector:(SEL)action{ if (target==_target) { return; } _target = target; _action = action;}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{}-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ if (_target) { if ([_target respondsToSelector:_action]) { [_target performSelector:_action withObject:self]; } }}
Use
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CustomButton *btn = [[CustomButton alloc]initWithFrame:CGRectMake(0, 100, 200, 200)]; btn.backgroundColor = [UIColor redColor]; [btn addCustomButton:self andSelector:@selector(hello:)]; [self.view addSubview:btn]; }-(void)hello:(id)sender{ NSLog(@"hello customer ");}
Running result
17:09:03. 803 Target_action [1863: 89334] hello customer
Running memory status: