我一直在处理有关事件问题的许多答案,以及它们如何需要将用于存储添加的回调的备用代表字段。但是,我仍然非常困惑地适用于我实施它的方式。以下是我试图根据问题和答案遵循和实施的确切答案,但无济于事。
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);
}
我试图遵循我之前发布的答案,但是我对应该如何检查它们是否为无效,然后我感到困惑触摸事件。
如果需要更多代码来阐明问题,请发表评论。谢谢。
为了简单起见,即使EventHandler
是null
,也可以安全删除处理程序。因此:
this.GenericMotion -= HandleGenericMotion;
this.Touch -= HandleTouch;
即使GenericMotion
和/或Touch
是null
。
请注意,在删除处理程序并重新添加处理程序的时间,如果触发了事件,则不会处理。