您的位置:首页 > 编程语言 > Delphi

Delphi iOS Gesture 事件触发的探索

2015-12-08 20:47 351 查看
项目内容
调试平台iOS 9.1
工具版本Embarcadero Delphi Seattle
因在代码中使用了不同的对象事件响应手势动作(特别是多点触控的加入),其间出现了一系列奇怪现象,故有此研究:在TControl对象上的 OnGesture事件与OnMouse系列事件之间触发关系的探索。

多点触控时(igiZoom)各事件之间的触发顺序:

首先MouseDown事件被触发

OnGesture事件触发,TInteractiveGestureFlag.gfBegin in EventInfo.Flags,EventInfo.GestureID = igiZoom

MouseUP事件触发,参数与MouseDown所带参数一致

如果Object.InteractiveGestures参数设置了 Pan,Rotate那么在Zoom的同时很有可能会触发带入这两个参数值的事件

结束时需要注意,TInteractiveGestureFlag.gfEnd 标志并不一定会与TInteractiveGestureFlag.gfBegin成对出现,但一定会有至少一个。也就是说,当多点触控ZOOM结束时,以下三个参数事件可能不会全出现(但至少会出现一个):

TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiPan

TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiZoom

TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiRotate

据此可得出下述2关注点:

- 如果通过MouseUP(或MouseLeave)事件进行关键事务处理的话,需要注意多点触控启动时也会触发该事件!

- 如果通过TInteractiveGestureFlag.gfEnd标志判断手势完成的话,需多加几个事件点比较保险(如Zoom,Pan 都加入该标志的判断),并且要处理对多个gfEnd标志连续传入时的处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delphi 触控