Как добавить два делегата в элемент пользовательского интерфейса во время выполнения? - PullRequest
0 голосов
/ 23 марта 2010

я пытаюсь реализовать некоторые варианты поведения, когда элемент mapview прокручивается ... путем кодирования делегата для scrollview внутри mapview.

Итак, прямо сейчас, я получил указатель на представление прокрутки, используемое представлением карты в моем коде.

однако я хочу установить делегат этого вида прокрутки внутри вида карты, но проблема в том, что представление карты уже устанавливает делегата по умолчанию для этого вида прокрутки внутри вида карты.

могу ли я заставить моего делегата реализовать все сообщения протокола, явно отправив их делегату по умолчанию для просмотра карты, в то же время реализуя мои собственные поведения?

как еще я могу добавить свое собственное поведение делегата к уже существующему делегату по умолчанию ....?

спасибо всем, майкл

1 Ответ

1 голос
/ 23 марта 2010

Вы можете просто получить существующего делегата и сохранить ссылку для себя:

origDelegate = [theView delegate];

А затем установите желаемый объект в качестве делегата:

[theView setDelegate:self];

Затем при получении сообщения делегата вызовите тот же метод на origDelegate, измените ответ, если хотите (или при необходимости), а затем верните измененный ответ:

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

    if (decision1)
    {
        result = !result;
    }

    return result;
}
...