通过修改 FMX.Controls 单元,我们在编辑控制上滑动时,输入法自动弹出的问题算是比较完美的解决了(参考:[FMX]开年第一弹:修改 FMX.Controls 避免按住编辑框移动时弹出输入法的问题),但 FMX 依然存在着滑动时触发OnClick事件的问题。
现在我们要做的就是解决这一问题:
1、找到 FMX.Forms.pas,将其复制到工程的当前目录下。
2、在 implementation 后面,加入下面的代码,以记录鼠标按下的位置。
var GlobalMouseFirstDownPos:TPointF;
3、找到 TCommonCustomForm.MouseDown 的实现函数,在 FDownPos := FMousePos; 一句后面,加上下面的代码:
GlobalMouseFirstDownPos:=FMousePos;
4、找到 TCommonCustomForm.MouseUp 的实现函数,在 if FCaptured <> nil then 前面,加上下面的代码:
if DoClick then begin DoClick:=GlobalMouseFirstDownPos.Distance(FMousePos)<=10; GlobalMouseFirstDownPos:=FMousePos; end;
5、重新编译程序,问题解决。