【问题标题】:Xamarin Add click event in custom rendererXamarin 在自定义渲染器中添加点击事件
【发布时间】:2020-04-05 07:26:10
【问题描述】:

我正在使用这个拖放代码: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】:

    这里需要做很多好的事情才能让它以一种真正好的方式工作,如果你期望这样,那么问题需要关闭,因为这不是其他人为你编写代码的网站.

    假设你对此没问题,我会告诉你如何做的非常基本的想法。

    关键在于记录touchedDown = true;DateTime 并将其与touchedDown = false;DateTime 进行比较,如果它低于某个阈值,则称其为“点击”。如果您这样做,将会有一些工件,但您需要解决它们。

    【讨论】:

    • 谢谢,我并不是真的在寻找代码,而是更多这样的想法......你真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    相关资源
    最近更新 更多