我有一个包含几个子视图的视图,每个子视图上都有一个透明按钮。我将这些视图放在for循环中的主UIView上,在此循环中,我还为subviews按钮属性分配了一个目标和一个动作。我的问题是,只有在循环中创建的第一个视图和按钮才起作用(也就是说,当我单击它时会调用它的动作)。
循环的相关部分如下所示:
// _categories is an array
for (int i = 0; i < _categories.count; i++) {
[...]
Category *category = [_categories objectAtIndex:i];
CategoryView *categoryView = [[CategoryView alloc] initWithFrame:categoryRect andTitle:category.name];
[...]
categoryView.categoryButton.tag = [category.categoryId intValue];
[categoryView.categoryButton addTarget:self action:@selector(openCategoryWithId:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:categoryView];
[...]
}
动作如下所示:
- (void)openCategoryWithId:(UIButton *)sender
{
// Only gets called when I click on the first views button.
NSLog(@"Hello");
}
我试图为子视图创建一个强大的属性,但这没有帮助。
关于我应该做什么的任何想法?
最佳答案
似乎由于categoryRect
导致按钮未正确放置。