Xamarin.Forms 手势识别器 - 事件'View.GenericMotion'只能显示在 += 或 -= 的左侧



我一直在处理有关事件问题的许多答案,以及它们如何需要将用于存储添加的回调的备用代表字段。但是,我仍然非常困惑地适用于我实施它的方式。以下是我试图根据问题和答案遵循和实施的确切答案,但无济于事。

https://stackoverflow.com/a/41641881/8065149

总的来说,我正在尝试将自定义手势添加到Xamarin和Android中的自定义地图。我希望能够在点击并握住我的地图上添加一个别针。我目前已经弄清楚了如何通过水龙头添加销钉,但是我想将其更改为长时间。以下是我用来尝试在项目中添加手势的教程,因为它看起来很有希望(即使他的网站不安全)。在网站下方是GitHub项目,也是易于遵循的情况。

https://arteksoftware.com/gesture-recognizers-with-xamarin-forms/https://github.com/robgibbens/xamarinformsesgesturerecognizer

以下是所讨论的代码。具体而言,这两条线if (this.GenericMotion != null)if (this.Touch != null)。这两条行丢弃了错误: The event 'View.GenericMotion' can only appear on the left hand side of += or -=

    protected override void OnElementChanged (ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged (e);
        if (e.NewElement == null) {
            if (this.GenericMotion != null) {
                this.GenericMotion -= HandleGenericMotion;
            }
            if (this.Touch != null) {
                this.Touch -= HandleTouch;
            }
        }
        if (e.OldElement == null) {
            this.GenericMotion += HandleGenericMotion;
            this.Touch += HandleTouch;
        }
    }
    void HandleTouch(object sender, TouchEventArgs e)
    {
        _detector.OnTouchEvent(e.Event);
    }
    void HandleGenericMotion(object sender, GenericMotionEventArgs e)
    {
        _detector.OnTouchEvent(e.Event);
    }

我试图遵循我之前发布的答案,但是我对应该如何检查它们是否为无效,然后我感到困惑触摸事件。

如果需要更多代码来阐明问题,请发表评论。谢谢。

为了简单起见,即使EventHandlernull,也可以安全删除处理程序。因此:

this.GenericMotion -= HandleGenericMotion;
this.Touch -= HandleTouch;

即使GenericMotion和/或Touchnull

请注意,在删除处理程序并重新添加处理程序的时间,如果触发了事件,则不会处理

相关内容

  • 没有找到相关文章

最新更新