I am new to iPhone development,I need help in understanding the below,as I am able to create newView using the following
UIView *newView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 80, 30)];
newView.backgroundColor=[UIColor clearColor];
UIButton *newViewBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
newViewBtn.frame = CGRectMake(newView.frame.origin.x+5,
newView.frame.origin.y+5,60,20);
[newView addSubview:newViewBtn];
[self.view addSubview:newView];
Above code is working without any problem. But when I try to create the view using the following, view is created alright, but the button on the view is not clickable.
int randNumX = arc4random() % 150;
int randNumY = arc4random() % 200;
UIView newView=[[UIView alloc]init];
newView.frame =CGRectMake(randNumX, randNumY, 80, 30);
newView.backgroundColor=[UIColor clearColor];
UIButton *newViewBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
newViewBtn.frame = CGRectMake(newView.frame.origin.x+5
,newView.frame.origin.y+5,60,20);
[newView addSubview:newViewBtn];
[self.view addSubview:newView];
and there is one another scenario if change the following code
newViewBtn.frame = CGRectMake(newView.frame.origin.x+5
,newView.frame.origin.y+5,60,20);
with the code below app crashes
newViewBtn.frame =CGRectMake(randNumX+5,randNumY+5,60,20);
Any help will be greatly appreciated,thanks in advance.
I have added the following code already
newViewBtn addTarget:self action:@selector(btnclick:)forControlEvents:UIControlEventTouchUpInside];
-(void)btnclick:(id)sender
{
//my code
}
It is working in the first case:
My main concern here is when the newView is draw ,why the button on this view is not clickable
Here the problem is the Line below ,As the new child view must be according to the parent view
writting the above as below solved the problem
I believe you forgot to add a target (the function called when the button is clicked):
Make sure that the function you're targeting exists, or it will crash when you click.
Try following code...
You forgot this :
Please try this.
When adding a custom subview to a UIButton you have to run off the userInteractionEnabled property.
then add to your button.
Otherwise your custom view intercepts touch events before the button since it's added to the top of the view stack.
You need to add target like this...