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
When adding a custom subview to a UIButton you have to turn off the userInteractionEnabled property.
customView.userInteractionEnabled = NO;
then add to your button.
[customButton addSubView:customView];
Otherwise your custom view intercepts touch events before the button since it's added to the top of the view stack.
Here the problem is the Line below ,As the new child view must be according to the parent view
newViewBtn.frame =CGRectMake(randNumX+5,randNumY+5,60,20);
writting the above as below solved the problem
newViewBtn.frame =CGRectMake(5,5,60,20);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With