我需要链接到一个UIScrollView
的委托(它不在我的代码中,我无法控制它)并处理它的一些方法,同时将所有事件传递给前一个委托。
我天真的实现是这个代理类:
public class ScrollViewProxyDelegate : UIScrollViewDelegate
{
private UIScrollViewDelegate _realDelegate;
public ScrollViewProxyDelegate (UIScrollViewDelegate realDelegate)
{
_realDelegate = realDelegate;
}
public override void DecelerationStarted (UIScrollView scrollView)
{
_realDelegate.DecelerationStarted (scrollView);
}
public override void DecelerationEnded (UIScrollView scrollView)
{
_realDelegate.DecelerationEnded (scrollView);
}
// ...
}
这没有成功,因为scrollView.Delegate
我传递给ScrollViewProxyDelegate
构造函数原来是null
因为这个特定的委托位于不同的类树中。我追求的属性是WeakDelegate
,但它是NSObject
.
我读了这个,我仍然很困惑。我想我可以NSObject
在每个方法中对此调用 Objective C 选择器,但有没有更简洁的方法?
更新 1
我刚刚尝试了代理PerformSelector
,RespondsToSelector
但它导致无法识别的选择器崩溃。
更新 2
好的,显然NSProxy
是人们为此使用的。调查。
更新 3
NSProxy
哎呀,在 MonoTouch 中没有。
更新 4
我最终使用 Key Value Observing 来观看我的视图contentOffset
。我早该想到的!不过,如果我需要它,我很好奇如何实现代理。
挂钩视图委托的最简单方法是什么?