gpt4 book ai didi

xamarin - 为什么 SkiaSharp Touch SKTouchAction.Moved 事件不起作用?

转载 作者:行者123 更新时间:2023-12-04 00:27:16 25 4
gpt4 key购买 nike

概括

使用 SKTouchAction.Moved 的 ActionType 永远不会引发 Touch 事件, 但是 SKTouchAction.Pressed被提出。为什么 .Moved事件永远不会被提出?

细节

我正在尝试在 SkiaSharp 中创建一个 slider 。当用户触摸 slider 或拖动时,此控件将需要更新拇指(可移动的小圆圈)。这托管在 Xamarin Forms 应用程序中,我创建了一个 SKCanvasView绘制 slider 并响应触摸事件。

我已经成功响应了触摸事件,所以我知道SKCanvasView正在接收一些 UI 事件,但 SKTouchAction.Moved从未提出。

示例代码

private SKCanvasView CreateSliderControl()
{
var control = new SKCanvasView();
control.PaintSurface += HandlePaintHeightControl;
control.EnableTouchEvents = true;
control.Touch += (sender, args) =>
{
var pt = args.Location;

switch (args.ActionType)
{
case SKTouchAction.Pressed:
// 1. This code gets hit whenever I touch the canvas
control.InvalidateSurface();
break;
case SKTouchAction.Moved:
// 2. This code never gets hit, even if I push, touch, slide, etc
control.InvalidateSurface();
break;
}
};
control.InputTransparent = false;

return control;
}


如上图 #1被击中(我可以在那里放置一个断点,并且我的控制面无效)。 #2永远不会被击中,但我希望当我将手指滑过控件时它会被击中。

我试过的
  • 清理/重建以确保我的代码实际上正在部署
  • 从 SkiaSharp 1.60.3 升级到 1.68.0
  • 我能想到的所有疯狂的手指 Action
  • 通读https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/graphics/skiasharp/transforms/touch ,但是它使用 XAML 来分​​配一个效果(我不熟悉),并且在我的代码中的任何地方都看不到 TouchEffect 类可以将其添加到包含我的 SkiaCanvasView 的父 Grid .
  • 最佳答案

    找到一个 similar issue在 SkiaSharp 的 Github 上。

    尝试通过将事件参数中的 Handled 属性设置为 true 来告诉操作系统您想要“继续接收触摸事件”。

    private SKCanvasView CreateSliderControl()
    {
    var control = new SKCanvasView();
    control.PaintSurface += HandlePaintHeightControl;
    control.EnableTouchEvents = true;
    control.Touch += (sender, args) =>
    {
    var pt = args.Location;

    switch (args.ActionType)
    {
    case SKTouchAction.Pressed:
    control.InvalidateSurface();
    break;
    case SKTouchAction.Moved:
    control.InvalidateSurface();
    break;
    }
    // Let the OS know that we want to receive more touch events
    args.Handled = true;
    };
    control.InputTransparent = false;

    return control;
    }

    关于xamarin - 为什么 SkiaSharp Touch SKTouchAction.Moved 事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227649/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com