分配GetViewForAnnotation后,Xamarin.Forms类不会收到Click事件

时间:2016-02-19 20:58:27

标签: xamarin xamarin.ios xamarin.forms

我有一个Xamarin.Forms页面,其中包含许多引脚的地图。我已经构建了一个自定义iOS渲染器来更改显示图钉的图像。

一旦我分配了GetViewForAnnotation委托,我的Xamarin.Forms类就不再收到“Clicked”事件。我可以通过自定义渲染器访问它,我相信,但是当用户点击引脚的标题时我想要做的是将另一个Xamarin.Forms页面推送到导航堆栈,我不知道如何控制从我的Xamarin.iOS应用程序中回到我的Xamarin.Forms应用程序。

我有一种感觉,我需要在其他一些地方使用这种类型的逻辑......我需要处理一个CustomRenderer事件,然后将控制权传递给Xamarin.Forms应用程序以进行导航或其他目的。

所以我想说几个方向:

1 - 更直接 - 当点击地图的图钉时,即使iOS应用通过CustomRenderer处理创建引脚,也可以在Xamarin.Forms应用中触发我的“Clicked”事件

2 - 更高级和可自定义 - 将控制权传递回我的Xamarin.Forms应用程序(可能会引发与渲染器级别相关的事件?)

我现在更喜欢将Clicked事件恢复,但我猜测,在CustomRenderer中分配GetViewForAnnotation事件后,这可能无效。

1 个答案:

答案 0 :(得分:0)

根据我的阅读,您可以在渲染器中检测到注释点击。

OnElementChanged的渲染器中,您可以访问与其相关的View Xamarin.Forms中的PCL

考虑未来的几种可能性: -

  • a)使用MessagingCenter传达兴趣之间的信息(参见 here)。

  • b)使用标准的活动提升,即public event EventHandler<someEventArgs> OnSomeEvent通过您的View PCL

  • c)如果您的ICommand View使用PCL方法 更多MVVM定向,并以这种方式调用。

通过View / Page收到通知后,根据您的工作地点,您可以根据您在特定平台上提供的信息进行正常导航PCL中的渲染器。