Xamarin在自定义渲染器中添加点击事件

问题描述 投票:0回答:1

我正在使用此拖放代码: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功能。仅出于此想法,我想在单击图像时弹出一个窗口,并且在按住图像时仍能够拖放。有人可以帮我吗?

c# xamarin xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

为了使它以一种真正好的方式工作,这里需要做很多事情,如果您希望这样,那么就需要解决问题了,因为这不是其他人为您编写代码的站点。

假设您对此感到满意,我将为您提供有关如何操作的非常基本的想法。

关键是记录DateTimetouchedDown = true;并将其与DateTimetouchedDown = false;进行比较,如果它低于某个阈值,则称为“单击”。如果执行此操作,将会有一些工件,但是您需要解决它们。

© www.soinside.com 2019 - 2024. All rights reserved.