我有一个包含几个子视图的视图,每个子视图上都有一个透明按钮。我将这些视图放在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导致按钮未正确放置。

10-01 08:59