通过2类使用委托的iOS

通过2类使用委托的iOS,ios,delegates,Ios,Delegates,我有3个类:ListItem、ListPageView、ListViewController 加载项目时,ListViewController中有代码: ListPageView *pageView = [[ListPageView alloc] init]; pageView.delegate = self; for(NSDictionary *_itemDetails in res) { // khởi tạo item của list ListItem *item = [

我有3个类:ListItem、ListPageView、ListViewController

加载项目时,ListViewController中有代码:

ListPageView *pageView = [[ListPageView alloc] init];
pageView.delegate = self;
for(NSDictionary *_itemDetails in res)
{
    // khởi tạo item của list
    ListItem *item = [[ListItem alloc] initWithImage:[MEDIA_SERVER stringByAppendingString:[_itemDetails objectForKey:@"image"]]];
    item.data = _itemDetails; // copy
    item.center = CGPointMake(colIndex * 165 + 230 + colIndex * 30, rowIndex * 125 + 120 + rowIndex * 10);
    // gán tổng số page hiện có trên server
    _totalPage = [[_itemDetails objectForKey:@"pages"] intValue];
    // delegate vào self để gọi sự kiện click
    item.delegate = pageView;
    item.tag = ITEM_TAG + i;
    i++;
    // set Index
    colIndex++;
    if(colIndex == 4)
    {
        rowIndex++;
        colIndex = 0;
    }

    [pageView addSubview:item];
}
[self.view addSubview:pageView];
问题是,若我直接将ListItem添加到self.view中,ListViewController可以委托ListItem的触摸事件。但如果我将ListItem添加到ListPageView中,则将ListPageView添加到self.view ListViewController无法从ListItem委派触摸事件

列表项代表:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([_delegate respondsToSelector:@selector(ListItemBeginTouched:)])
{
    [_delegate ListItemBeginTouched:self];
}
ListPageView委托:

-(void)ListItemBeginTouched:(ListItem *)listItem
{
if ([_delegate respondsToSelector:@selector(ItemBeginTouched:withPageView:)])
{
    [_delegate ItemBeginTouched:listItem withPageView:self];
}
}

您可能想尝试在更多信息中实现hitTest和/或Point::抱歉,我忘了将frame设置为pageView。谢谢你的回答:)