| 测试已测试 | ✓ |
| 语言语言 | Obj-CObjective C |
| 许可证 | Apache 2 |
| 发布上次发布 | 2016年7月 |
由Chris Cox维护。
此类充当 UIScrollViewDelegate 事件的中介对象,并将所有接收的事件按注册顺序转发给注册观察者。
当多路复用器收到 UIScrollViewDelegate 方法调用时,多路复用器按注册顺序将调用转发到每个观察者。
如果滚动视图方法签名有返回值,则在所有代理方法调用之后,将由第一个响应的观察者提供返回值。如果没有观察者实现该方法,将使用默认返回值。
然而,如果设置了组合器并且接收类符合 MDFScrollViewDelegateCombining 协议,那么接收类可以通过使用可选协议方法指定要返回哪个结果值。
#import "MDFScrollViewDelegateMultiplexer.h"
_multiplexer = [[MDFScrollViewDelegateMultiplexer alloc] init];
myScrollView.delegate = _multiplexer;
[_multiplexer addObservingDelegate:myControl];
[_multiplexer addObservingDelegate:anotherControl];MDFScrollViewDelegateCombining 协议首先遵守 MDFScrollViewDelegateCombining 协议
@interface MyViewController () <MDFScrollViewDelegateCombining>
@end
[_multiplexer setCombiner:self];处理返回值之一的 UIScrollViewDelegate 协议方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return myZoomingView;
}最后,从组合器方法返回所需的观察者的结果
- (UIView *)scrollViewDelegateMultiplexer:(MDFScrollViewDelegateMultiplexer *)multiplexer
viewForZoomingWithResults:(NSPointerArray *)results
fromRespondingObservers:(NSArray *)respondingObservers {
// Lets return the results from the observer which is equal to self.
if (respondingObservers[0] == self) {
return [results pointerAtIndex:0];
}
return nil;
}