在我的应用程序中,我需要解析来自网络的一些数据,并添加一些自定义按钮。
稍后,当用户单击它时,我将提供更多详细信息。
我添加它的代码是这样的
...
[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");
}
我一直怀疑我在代码中创建的按钮已经被释放,并打印出用于存储这些按钮的数组,尽管它们是有效的地址...
谢谢!
威廉
最佳答案
我才发现原因。
现在,[self.imageView addSubview:businessButton];
可以代替[self.view addSubview:businessButton];
起作用。
我认为在情节提要中添加imageView之后,我并不真正了解视图关系。
关于ios - UIButton不响应触摸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14027019/