I create a menuView in
self.view
userInteractionEnabled
- (void)viewDidLoad {
[super viewDidLoad];
LeftMenuView *leftView=[LeftMenuView createLeftMenuView];
leftView.userInteractionEnabled=YES;
self.leftView=leftView;
[self.view addSubview:leftView];
//nightButton
UIButton *nightButton=[self.leftView viewWithTag:6];
[nightButton addTarget:self action:@selector(touchButton:) forControlEvents:UIControlEventTouchUpInside];
leftView.userInteractionEnabled=YES;
//set
UIButton *settingButton=[self.leftView viewWithTag:4];
[settingButton addTarget:self.leftView action:@selector(push) forControlEvents:UIControlEventTouchUpInside];
}
-(instancetype)initWithFrame:(CGRect)frame
{
self=[super initWithFrame:frame];
self.backgroundColor=[UIColor colorWithRed:26/256.f green:31/256.f blue:36/256.f alpha:0.7];
[self addHeaderView];
[self addButton];
return self;
}
#pragma mark -add view to menu view
-(void)addHeaderView
{
UIView *headViewUp=[[UIView alloc]init];
headViewUp.userInteractionEnabled=YES;
headViewUp.frame=CGRectMake(0, 0, yScreenWidth/2, 114);
headViewUp.backgroundColor=ColorWithRGB(26, 31, 36);
headViewUp.backgroundColor=[UIColor redColor];
self.headViewUp=headViewUp;
[self addSubview:headViewUp];
UIView *headViewDown=[[UIView alloc]init];
headViewDown.userInteractionEnabled=YES;
headViewDown.frame=CGRectMake(0, yScreenHeight-50, yScreenWidth/2, 50);
headViewDown.backgroundColor=ColorWithRGB(26, 31, 36);
self.headViewDown=headViewDown;
[self addSubview:headViewDown];
}
-(void)addButton
{
UIButton *settingButton=[self setFrame:CGRectMake(yScreenWidth*2/6, 64, yScreenWidth/6, 50 ) title:@"设置" image:@"Menu_Icon_Setting"];
settingButton.userInteractionEnabled=YES;
settingButton.tag=4;
[self resizeTextAndImageInButton:settingButton];
[self.headViewUp addSubview:settingButton];
UIButton *nightButton=[self setFrame:CGRectMake(yScreenWidth/4, 0, yScreenWidth/4, 50 ) title:@"白天" image:@"Menu_Day"];
nightButton.tag=6;
[self.headViewDown addSubview:nightButton];
}
-(UIButton *)setFrame:(CGRect)frame title:(NSString *)title image:(NSString *)imageName
{
UIButton *button=[[UIButton alloc]initWithFrame:frame];
[button setTitle:title forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
button.titleLabel.font=[UIFont systemFontOfSize:8];
button.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;
return button;
}
-(void)resizeTextAndImageInButton:(UIButton *)button
{
[button setTitleEdgeInsets:UIEdgeInsetsMake(button.imageView.frame.size.height ,-button.imageView.frame.size.width, 0.0,0.0)];
[button setImageEdgeInsets:UIEdgeInsetsMake(-10, 0.0,0.0, -button.titleLabel.bounds.size.width)];
}
I went through your code. you are doing one mistake that you are not setting the frame for "LefMenuView".Even you did not do this, its subview are visible but not touchable or clickable.
So try this. i run by adding below code. Now i am able to see the click actions.
Rule of thumb : if super view frame is Zero then all subviews are visible but not touchable.(Because you are touching out side of bounds).
ViewController.m
LeftMenuView *leftView=[LeftMenuView createLeftMenuView];
leftView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
leftView.userInteractionEnabled=YES;