在我的应用中,我需要从网络中解析一些数据,并添加一些自定义按钮。 之后,当用户点击它时,我会提供更多详细信息。
我添加它的代码就像这样
...
[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");
}
我一直怀疑我在代码中创建的按钮已经发布,并打印出我用来存储这些按钮的数组,但它们是有效的地址...
谢谢!
威廉
答案 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];
目标必须是定义选择器的类。