WPF与iOS的事件处理机制

最近在学习WPF中深深感觉到微软的高大上,在iOS中处理事件的机制是响应者链条,触发事件时从最外层一层一层的视图往里面找实现方法,当有响应方法时就终止。这点有点类似于WPF中的隧道路由事件。

在WPF中的事件叫做路由事件

事件定义

public  static  readonly RoutedEvent  ClickEvent;

事件注册

ButtonBase.ClickEvent = EventManager.RegisterRoutedEvent("click",routingStrategy.Bubble,typeof(RoutedEventHandle),typeof(ButtonBase));

引发事件

routedEventArgs e = new RoutedEventArgs(ButtonBase.ClickEvent,this)

base.RaiseEvent(e);


路由事件分为三种方式出现:

第一:与普通的.NET事件类似的直接事件(direct event),他们源于一个元素,不传递给其他元素,例如MouseEnter事件。

第二:在包含层次中向上传递的冒泡路由事件(bubbling event) 例如MouseDown事件,事件首先由被单击的元素引发,接下来被该元素的父元素引发,一级一级向上传递,直到到达元素树的顶部

第三:在包含层次中向下传递的隧道路由事件(tunneling event)隧道路由事件在事件到达恰当的控件之前为预览事件(甚至终止事件)提供了机会。例如,通过PreviewKeyDown事件可以截获是否按下某个键。首先在窗口级别上,然后是更具体的容器,直至到达当时按下键时具有焦点的元素。

你可能感兴趣的:(WPF与iOS的事件处理机制)