[英]Xamarin Add click event in custom renderer
我正在使用这个拖放代码: https : //github.com/CrossGeeks/DragViewSample/tree/master/DragViewSample/DragViewSample
这很好用,但现在我不仅希望能够拖放图像,还希望能够进行单击操作。 该功能可能需要在这部分代码的自定义渲染器中完成:
public override bool OnTouchEvent(MotionEvent e)
{
float x = e.RawX;
float y = e.RawY;
var dragView = Element as DraggableView.DraggableView;
switch (e.Action)
{
case MotionEventActions.Down:
if (dragView.DragMode == DragMode.Touch)
{
if (!touchedDown)
{
if (firstTime)
{
originalX = GetX();
originalY = GetY();
firstTime = false;
}
dragView.DragStarted();
}
touchedDown = true;
}
dX = x - this.GetX();
dY = y - this.GetY();
break;
case MotionEventActions.Move:
if (touchedDown)
{
if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Horizontal)
{
SetX(x - dX);
}
if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Vertical)
{
SetY(y - dY);
}
}
break;
case MotionEventActions.Up:
touchedDown = false;
dragView.DragEnded();
break;
case MotionEventActions.Cancel:
touchedDown = false;
break;
}
return base.OnTouchEvent(e);
}
但我不知道如何在不移动图像的情况下为其添加 Click 功能。 只是为了这个想法,当我点击图像时我想要一个弹出窗口,并且在我按住它时仍然能够拖放。 有人能帮我吗?
在这里需要做很多很好的事情才能使其以一种真正好的方式工作,如果您希望这样做,那么问题需要关闭,因为这不是其他人为您编写代码的站点。
假设你没问题,我会给你关于如何做的非常基本的想法。
关键在于记录touchedDown = true;
的DateTime
touchedDown = true;
并将其与touchedDown = false;
的DateTime
进行比较touchedDown = false;
如果它低于某个阈值,则称其为“点击”。 如果您这样做,将会有一些工件,但您需要解决它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.