Невозможно вызвать IBAction UIButton из UIView - PullRequest
1 голос
/ 09 декабря 2010

Я новичок в Objective C. Я создал метод для создания и отображения кнопки внутри UIView (UIView находится внутри другого View с именем contentView, и contentView будет добавлен как подпредставление в UIScrollView Проблема в том, что я не могу нажать на сгенерированную кнопку, чтобы вызвать действие IB с именем playAction. Может кто-нибудь помочь мне? Спасибо

- (void) displayCategoryBestSellers
{
    //Structure: ScrollView -> ContentView -> MainView -> ImageView and Button

    UIView * mainView = [[UIView alloc] initWithFrame:CGRectMake(0,0,160,105)];
    mainView.userInteractionEnabled = YES;

    UIImage * backgroundImage = [UIImage imageNamed:@"blackwhitesquare.png"];           
    UIImageView * uiImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,145,105)];
    uiImageView.image = backgroundImage;
    uiImageView.center = CGPointMake(mainView.frame.size.width /2, mainView.frame.size.height/2);   
    uiImageView.userInteractionEnabled = YES;

    [mainView addSubview:uiImageView];

    UIButton *playButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    playButton.frame = CGRectMake(0,0,100,90);

    NSData *mydata = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://media.theseus.cataloguesolutions.com/images/72by72/324178611_0004_PG_1.jpg"]];
    UIImage *myimage = [[UIImage alloc] initWithData:mydata];

    [playButton setBackgroundImage:myimage forState:UIControlStateNormal];
    playButton.center = CGPointMake(mainView.frame.size.width /2, mainView.frame.size.height/2);        
    [playButton addTarget:self action:@selector(playAction:) forControlEvents:UIControlEventTouchDown];     
    playButton.userInteractionEnabled = YES;

    [mainView addSubview:playButton];

    [contentView addSubview:mainView];

    contentView.userInteractionEnabled = YES;

    [scrollView addSubview:contentView];
    scrollView.delegate = self;

    scrollView.userInteractionEnabled = YES;        
}

-(IBAction)playAction: (id)sender
{
    NSLog(@"Button Clicked");
}

1 Ответ

1 голос
/ 09 декабря 2010

Используйте UIControlEventTouchUpInside вместо UIControlEventTouchDown.

...