开发者

Can't get programmatically made UIButton to work - iPhone

Here is the code I'm using:

-(void)viewDidLoad
{
    NSString *checkerPath = [[NSBundle mainBundle] pathForResource:@"black-yellow-checker" ofType:@"png"];
    UIImage *checkerImage = [[UIImage alloc] initWithContentsOfFile:checkerPath];
    checkerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 230.0f, 320.0f, 280.0f)];
    [checkerView setImage:checkerImage];

    UIButton *backButton = [[UIButton buttonWithType开发者_StackOverflow中文版:UIButtonTypeCustom] retain];
    backButton.frame = CGRectMake(45.0f, 175.0f, 230.0f, 50.0f);
    [backButton setBackgroundImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"yellowButton" ofType:@"png"]] forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(goBackHome:) forControlEvents:UIControlEventTouchDown];
    [backButton setTitle:@"Back" forState:UIControlStateNormal];
    backButton.titleLabel.font = [UIFont fontWithName:@"Marker Felt" size:30];
    backButton.titleLabel.textColor = [UIColor blackColor];
    [checkerView addSubview:backButton];
}

- (void)goBackHome:(id)sender
{
    NSLog(@"go back pressed");
}

Not sure why this doesn't work. The button shows up, but when I press it nothing happens. It doesn't even change to the "indented" image when I touch it. Nothing. Can't use IB, has to be programmatically. Any thoughts?


UIImageView has userInteractionEnabled set to NO by default. This prevents any subviews from getting touches.

You could either enable user interaction of the image view by

checkerView.userInteractionEnabled = YES;

or create a new UIView to include both checkerView and the backButton.

UIView* newView = ...
...
[newView addSubview:checkerView];
[newView addSubview:backButton];


I believe that the forControlEvents: has to be UIControlEventTouchUpInside.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜