iOSはButton付きUIVEコントロールをカプセル化し、target-actionモードでbuttonにクリックイベントを追加
1746 ワード
カプセル化されたBaseViewhファイル
カプセル化されたBaseViewm
ファイル
viewControllerでBaseViewを使用する
#import <UIKit/UIKit.h>
@interface BaseView : UIView
-(void)addTarget:target action:(SEL)action;
@end
カプセル化されたBaseViewm
ファイル
#import "BaseView.h"
@interface BaseView ()
@property (nonatomic, strong, nullable) UIButton *button;
@property (nonatomic, weak) id target;
@property (nonatomic, assign) SEL action;
@end
@implementation BaseView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.button = [UIButton buttonWithType:(UIButtonTypeCustom)];
self.button.frame = CGRectMake(0, 0, 100, 100);
self.button.backgroundColor = [UIColor blackColor];
[self addSubview:self.button];
[self.button addTarget:self action:@selector(buttonAction) forControlEvents:(UIControlEventTouchUpInside)];
}
return self;
}
- (void)buttonAction {
// action
[self.target performSelector:self.action withObject:self afterDelay:0];
}
// target-action
- (void)addTarget:(id)target action:(SEL)action {
self.target = target;
self.action = action;
}
viewControllerでBaseViewを使用する
#import "ViewController.h"
#import "BaseView.h"
@interface ViewController ()
@property (nonatomic, strong, nullable) BaseView *baseView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.baseView = [[BaseView alloc] init];
self.baseView.frame = self.view.frame;
[self.view addSubview:self.baseView];
[self.baseView addTarget:self action:@selector(buttonAction)];
}
- (void)buttonAction {
NSLog(@" ");
}
@end