【问题标题】:UIButton not working on animated subViewUIButton 不适用于动画子视图
【发布时间】:2012-12-05 10:59:24
【问题描述】:

我想在子视图中添加两个按钮,当视图出现时,子视图会出现在父视图之上。按钮已正确初始化并出现,但按下时它们没有反应。有人知道为什么吗?这是我的代码:

-(void) viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];
    self.view.backgroundColor = [UIColor blackColor];
    //Animation View
    imageView= [[UIImageView alloc] initWithFrame:CGRectMake(0, 499, 320, 0)];
    imageView.image = [UIImage imageNamed:@"trans.png"];
    [imageView setClipsToBounds:YES];
    [imageView setContentMode:UIViewContentModeBottom];
    [self.view addSubview:imageView];


    [UIView animateWithDuration:1.0f
                          delay:0.5f
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^(void) {
                         imageView.frame = CGRectMake(0, 92, 320, 320);

                     }
                     completion:NULL];
    [self.view bringSubviewToFront:imageView];
    // Animation View Buttons
    //1 Amazon
    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *button=[UIImage imageNamed:@"button.png"];
    [button1 setImage:button forState:UIControlStateNormal];
    button1.frame = CGRectMake(0, 290, 80, 30);
    button1.backgroundColor=[UIColor whiteColor];
    button1.showsTouchWhenHighlighted=YES;

    [button1 addTarget:self
                action:@selector(openAmazon:)
     forControlEvents:UIControlEventTouchUpInside];
    [imageView addSubview:button1];

    //2 iTunes
    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
    [button2 setImage:button forState:UIControlStateNormal];
    button2.frame = CGRectMake(82, 290, 80, 30);
    button2.backgroundColor=[UIColor whiteColor];
    button2.showsTouchWhenHighlighted=YES;

    [button2 addTarget:self
     action:@selector(openiTunes:)
     forControlEvents:UIControlEventTouchUpInside];
    [imageView addSubview:button2];



}

【问题讨论】:

  • 您的 openAmazon 和 openiTunes 功能在哪里?你写了吗?
  • 为什么要在 UIImageView 中添加 UIButton?
  • @lakesh:是的,我写的。它们在同一个视图控制器中; Paramasivan:因为我只希望按钮在动画 ImageView 出现时出现。 nmock 给出了我的问题的解决方案,我必须启用我的 imageview 的用户交互 :) 但是感谢您的评论!

标签: objective-c uibutton uiviewanimation


【解决方案1】:

您需要使用选项 UIViewAnimationOptionAllowUserInteraction

...
options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction
...

【讨论】:

    【解决方案2】:

    确保在 imageView 上设置 userInteractionEnabled 属性:

    [imageView setUserInteractionEnabled:YES];
    

    【讨论】:

    • 这就是问题的解决方案!谢谢!
    【解决方案3】:
    [self.view bringSubviewToFront:imageView];
    

    你在增加它的框架后将你的图像视图带到前面,这会阻止按钮操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多