如何在运行时向ui元素添加两个委托?

时间:2010-03-23 17:27:54

标签: iphone objective-c delegates uiscrollview mkmapview

我试图在mapview元素滚动时实现一些行为...通过编写mapview内的scrollview的委托。

所以,现在,我得到了一个指向代码中地图视图使用的滚动视图的指针。

但是,我希望在地图视图中设置此滚动视图的委托,但问题是mapview已经在地图视图中为此滚动视图设置了默认委托。

我可以让我的委托实现协议的所有消息,明确地将它们发送到mapview的默认委托,同时还实现我自己的行为吗?

我怎样才能将自己的委托行为添加到已经存在的默认委托....?

谢谢大家, 迈克尔

1 个答案:

答案 0 :(得分:1)

您可以获取现有代理并为自己保存参考:

origDelegate = [theView delegate];

然后将您想要的对象设置为委托:

[theView setDelegate:self];

然后在获取委托消息时,在origDelegate上调用相同的方法,如果需要(或必要时)修改响应,然后返回修改后的响应:

- (BOOL)shouldViewDoSomething:(id)theView
{
    BOOL result = [origDelegate shouldViewDoSomething:theView];

    if (decision1)
    {
        result = !result;
    }

    return result;
}