UIButton没有回应接触

时间:2012-12-25 01:34:49

标签: ios uibutton

在我的应用中,我需要从网络中解析一些数据,并添加一些自定义按钮。 之后,当用户点击它时,我会提供更多详细信息。

  • 图片视图是应用的背景
  • 从服务器解析这些按钮(xPos,yPos)的位置(动态数据)
  • 当我点击我以编程方式添加的这些按钮时没有打印

我添加它的代码就像这样

    ...
    [businessButton setImage:businessImage forState:UIControlStateNormal];
    [businessButton setFrame:CGRectMake([xPos floatValue], [yPos floatValue], [businessImage size].width/2, [businessImage size].width/2)];
    [businessButton addTarget:self.imageView action:@selector(serviceProviderSelected:) forControlEvents:UIControlEventTouchUpInside];
    ...

- (void)serviceProviderSelected:(id)sender
{
    NSLog(@"sp tapped\n");
}

我创建了另一个虚拟应用程序(我认为是同样的事情),按钮效果很好......

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIButton *customizedButton = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *image = [UIImage imageNamed:@"business-icon.png"];
    [customizedButton setImage:image forState:UIControlStateNormal];
    [customizedButton setFrame:CGRectMake(100, 100, 20, 20)];
    [customizedButton addTarget:self action:@selector(customButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:customizedButton];
}

- (IBAction)buttonPressed:(id)sender {
    NSLog(@"yes, pressed\n");
}

我一直怀疑我在代码中创建的按钮已经发布,并打印出我用来存储这些按钮的数组,但它们是有效的地址...

谢谢!

威廉

3 个答案:

答案 0 :(得分:1)

我刚刚发现了原因。

而不是[self.imageView addSubview:businessButton];[self.view addSubview:businessButton];现在可以使用。

我认为在故事板中添加imageView后,我并不真正理解视图关系是怎样的。

答案 1 :(得分:1)

UIImageView默认禁用用户交互。你必须将此属性设置为YES才能获得UIButton或其他任何工作的子视图

答案 2 :(得分:0)

你需要这样做:

[businessButton addTarget:self action:@selector(serviceProviderSelected:) forControlEvents:UIControlEventTouchUpInside];

目标必须是定义选择器的类。