Резюме
Событие Touch никогда не вызывается с ActionType SKTouchAction.Moved
, но SKTouchAction.Pressed
вызывается. Почему событие .Moved
никогда не поднимается?
Деталь
Я пытаюсь создать слайдер в SkiaSharp. Этот элемент управления должен будет обновлять thumb (маленький подвижный круг), когда пользователь либо касается ползунка, либо перетаскивает. Он размещен в приложении Xamarin Forms, и я создал SKCanvasView
для рисования ползунка и реагирования на сенсорные события.
Я успешно ответил на события касания, поэтому я знаю, что SKCanvasView
получает некоторые события пользовательского интерфейса, но 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
никогда не получает удар, но я ожидаю, что он получит удар, когда проведу пальцем по элементу управления.
Что я пробовал