Reputation: 135
I'm trying to create a button, which once tapped will show a popover of another UIView. To test this out, I have the following code in my viewDidLoad section:
- (void)viewDidLoad
{
[super viewDidLoad];
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom];
[self.hard1 setFrame:CGRectMake(884, 524, 105, 60)]; // set the x,y,width and height based on your specs
UIImage *buttonImage = [UIImage imageNamed:@"green.jpg"];
hard1.layer.cornerRadius = 10;
hard1.clipsToBounds = YES;
[hard1 addTarget: self
action: @selector(buttonClicked:)
forControlEvents: UIControlEventTouchUpInside];
[self.hard1 setImage:buttonImage forState:UIControlStateNormal];
[self.view addSubview:self.hard1];
}
and further down:
- (IBAction) buttonClicked: (id)sender
{
NSLog(@"Tap");
}
however, the console does not log 'Tap' when I hit the button. Any ideas?
Upvotes: 7
Views: 23625
Reputation: 345
self.hard1 = [UIButton buttonWithType:UIButtonTypeCustom];
[hard1 addTarget: self
action: @selector(buttonClicked:) forControlEvents: UIControlEventTouchUpInside];
Replace hard1 to self.hard1
Upvotes: 4
Reputation: 4254
Watch these three lines of code:
hard1.layer.cornerRadius = 10;
hard1.clipsToBounds = YES;
[hard1 addTarget: self
action: @selector(buttonClicked:)
forControlEvents: UIControlEventTouchUpInside];
You are missing self. in all three. They should be:
self.hard1.layer.cornerRadius = 10;
self.hard1.clipsToBounds = YES;
[self.hard1 addTarget: self
action: @selector(buttonClicked:)
forControlEvents: UIControlEventTouchUpInside];
Also, if you are creating it programatically, it shouldn't be an IBAction (IB stands for interface builder and this is not created in interface builder).
Upvotes: 12
Reputation: 73688
You have put the event responder as buttonClicked
but in IBAction
you have defined buttonTap
. This would obviously not work...
It should be
[hard1 addTarget: self
action: @selector(buttonTap:)
forControlEvents: UIControlEventTouchUpInside];
Upvotes: 0