Не могу заставить работать программно UIButton - iPhone - PullRequest
5 голосов
/ 05 октября 2010

Вот код, который я использую:

-(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: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");
}

Не уверен, почему это не работает.Кнопка появляется, но когда я нажимаю ее, ничего не происходит.Это даже не меняется на «отступ» изображение, когда я касаюсь его.Ничего такого.Не может использовать IB, должно быть программно.Есть мысли?

Ответы [ 2 ]

6 голосов
/ 05 октября 2010

UIImageView имеет userInteractionEnabled, установленный в NO по умолчанию . Это предотвращает любые прикосновения от прикосновений.

Вы можете разрешить взаимодействие с пользователем при просмотре изображения с помощью

checkerView.userInteractionEnabled = YES;

или создайте новый UIView, включающий в себя checkerView и backButton.

UIView* newView = ...
...
[newView addSubview:checkerView];
[newView addSubview:backButton];
3 голосов
/ 05 октября 2010

Я считаю, что forControlEvents: должно быть UIControlEventTouchUpInside.

...