EventListener是一个观察者设计模式的实现,其API与JavaScript/ActionScript DOM中的API非常类似,包括:
有关DOM事件的更多信息请在此处查看
如同EventListener,NSNotification实现了观察者设计模式:您订阅事件/通知。它非常擅长做一件事情:获取全局(或特定对象集合)的通知。但是,在处理UI时它缺少一些关键功能。
EventListener试图通过引入知名的JavaScript DOM API到iOS来超越这些限制。
注意:当您想要发送全局通知时,仍然应该继续使用NSNotification。
API的表现与DOM事件非常相似。您所需要做的只是:
extern NSString *MyCustomEventClicked;
extern NSString *MyCustomEventDoubleClicked;
@interface MyCustomEvent : EVEEvent
// Add all your custom event properties
@end
@implementation aViewController
- (void)aMethod {
[self addEventListener:MyCustomEventCliked listener:@selector(onClicked:) useCapture:YES];
}
- (void)onClicked:(MyCustomEvent *)event {
// Do whatever you want
}
@end
/// somewhere in your code
MyCustomEvent *event = [MyCustomEvent event:MyCustomEventClicked];
// configure it
[self dispatchEvent:event];
注意:UIController和UIView是准备好的事件监听器。因此您可以直接在这些类内部触发和/或监听事件!
EventListener在iOS响应链中派发事件。这就是为什么UIController和UIView能够触发和/或监听事件的原因。