Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIButton event 'Touch Up Inside' not working. 'Touch Down' works fine

I've got a UIButton in a UIView, which is in a UIViewController that I've allocated and inited from a .xib file.

When hooking an IBAction up to the 'Touch Down' event of a UIButton it triggers correctly. But if I hook it up to the 'Touch Up Inside' event it doesn't respond.

Other events don't work either. 'Touch Drag Enter', 'Touch Drag Exit', 'Touch Up Outside' etc. Only Touch Down.

Does anyone have any idea why this might be?


The button is a simple rounded rectangle button in a view controller. I have loaded the view controller as such:

-(void) pushNewViewController
{
    MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [self.view addSubview:newViewController.view];
    [newViewController release];
}

I've added this button to rounded rect button to MyViewController, in IB. I created the following IBActions:

-(IBAction) buttonTouchDown:(id)sender
{
    NSLog(@"Button Touch Down Event Fired.");
}

-(IBAction) buttonTouchUpInside:(id)sender
{
    NSLog(@"Button Touch Up Inside Event Fired.");
}

In the IB I menu clicked on the button and dragged the Touch Down outlet to MyViewController and selected buttonTouchDown:. Saved the IB xib.

When I run and test the button and get the "Button Touch Down Event Fired" log message.

But when I go back to IB and change the Action to Touch Up Inside and hook it upto the buttonTouchUpInside: IBAction and save. I test again, I get no response.

Regards, Rich

like image 893
Rich Brooks Avatar asked Oct 11 '10 09:10

Rich Brooks


Video Answer


2 Answers

I'm sorry for being late but I have exactly the same problem. In my case it was a UITapGestureRecognizer assigned to parent view. So, it's good idea to check for recognizers as well.

like image 170
Ivan Nikitin Avatar answered Nov 15 '22 12:11

Ivan Nikitin


You're releasing newViewController.

While the adding the newViewController.view as a subview will retain the view, the newViewController object will have a retain count of 0.

like image 36
bryce Avatar answered Nov 15 '22 13:11

bryce