我想对FireMonkey多设备应用程序中TListView的项目使用“ LongTap”和“ PressAndTap”手势,我将OnGesture事件设置为ListView,如下所示:

begin
 case EventInfo.GestureID of
  igiPressAndTap : begin
                    {...}
                   end;
  igiLongTap : begin
                {...}
               end;
 end;

 Handled := True;
end;


但是当我在Android设备上对其进行测试时,不会发生OnGesture事件

我已经在InteractiveGestures属性上检查了所需的手势

我已经测试过是否带有GestureManager

如何为Listview的项目设置OnGesture?

对于OnGesture类型,没有类似TListViewItem的任何事件

我正在使用Delphi 10.2.3 Tokyo

最佳答案

我按照Tom提供的link中的说明测试了一个应用程序,您需要在Object Inspector的Touch属性内设置所需的手势。

android - 手势不适用于Android上的ListView项目-LMLPHP

在OnGesture事件中,代码仅检查GestureID是否是我要执行的Gesture。

procedure TfrmMain.listProdtsRotaGesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
  case EventInfo.GestureID of
    igiLongTap:
      ShowMessage('longTap: ' + listProdtsRota.Selected.Index.ToString);

    igiPressAndTap:
      ShowMessage('pressAndTap: ' + listProdtsRota.Selected.Index.ToString);

    igiDoubleTap:
      ShowMessage('doubleTap: ' + listProdtsRota.Selected.Index.ToString);
  end;
end;

07-27 13:50