Delphi iOS Gesture 事件触发的探索

项目内容
调试平台iOS 9.1
工具版本Embarcadero Delphi Seattle

因在代码中使用了不同的对象事件响应手势动作(特别是多点触控的加入),其间出现了一系列奇怪现象,故有此研究:在TControl对象上的 OnGesture事件与OnMouse系列事件之间触发关系的探索。

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

  1. 首先MouseDown事件被触发
  2. OnGesture事件触发,TInteractiveGestureFlag.gfBegin in EventInfo.Flags,EventInfo.GestureID = igiZoom
  3. MouseUP事件触发,参数与MouseDown所带参数一致
  4. 如果Object.InteractiveGestures参数设置了 Pan,Rotate那么在Zoom的同时很有可能会触发带入这两个参数值的事件
  5. 结束时需要注意,TInteractiveGestureFlag.gfEnd 标志并不一定会与TInteractiveGestureFlag.gfBegin成对出现,但一定会有至少一个。也就是说,当多点触控ZOOM结束时,以下三个参数事件可能不会全出现(但至少会出现一个):
    1. TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiPan
    2. TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiZoom
    3. TInteractiveGestureFlag.gfEnd+EventInfo.GestureID=igiRotate

据此可得出下述2关注点:
- 如果通过MouseUP(或MouseLeave)事件进行关键事务处理的话,需要注意多点触控启动时也会触发该事件!
- 如果通过TInteractiveGestureFlag.gfEnd标志判断手势完成的话,需多加几个事件点比较保险(如Zoom,Pan 都加入该标志的判断),并且要处理对多个gfEnd标志连续传入时的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值