【问题标题】:Xamarin Forms Maps: Pin click stops working after changing / replacing pinXamarin Forms Maps:更改/替换引脚后,引脚单击停止工作
【发布时间】:2015-05-03 03:27:02
【问题描述】:
  • 我为 iOS 创建了一个 Xamarin.Forms.Maps 地图。

  • 我添加了一些图钉

  • 我将点击处理程序添加到引脚

这些都很好

用户现在拖动地图并触发我的 onDrag 处理程序

然后我想刷新图钉以反映新的视图区域 这也有效 - 除了现在忽略引脚上的 Clicked 事件。显示信息框,但当我单击信息框时,处理程序本身永远不会被调用。这在第一次设置时有效,但在更改引脚后无效。

我已尝试在拖动时创建新引脚:

map.Pins.Clear();
foreach (Place p in PlaceList){
  Pin newPin = new Pin();
  pin.Label = p.PlaceName;
  pin.Clicked += DoPinClick;
}

然后我尝试在拖动时重用现有引脚:

Pin pin;
for (int i = 0; i < PlaceList.Count; i++) {
  if (i > 9)
    // max of 10 pins
    break;
  Place p = PlaceList [i];
  if (i >= map.Pins.Count - 1) {
    // a new pin to be created and added to the map pins
    pin = new Pin();
    pin.Clicked += DoPinClick;
    pin.Label = p.PlaceName;
    map.Pins.Add (pin);
  } else {
    // there was already a pin in that slot, get it and reuse it
    pin = map.Pins [i];
    pin.Label = p.PlaceName;
  }
  pin.Position = p.Position;
  // copy the pin into the slot it occupies already
  map.Pins [i] = pin;
}

但无论我遵循事件处理程序的哪种方法都只能在我更改引脚之前有效。

【问题讨论】:

  • 这可能无关紧要,但您是否尝试在清除现有列表之前删除事件处理程序?
  • 我没有,但我刚刚尝试过,没有任何区别。

标签: c# ios xamarin


【解决方案1】:

这似乎是 Xamarin 端的一个错误。

Bug report 25557

Bug report 29017

【讨论】:

  • 不,这些是早期的错误,完全停止了事件触发。我在 xamarin.forms.maps 1.4.2.6355 上,该事件现在确实触发了 - 直到我更改 Map.Pins 集合,然后它再也不会触发
  • 嗯,我在我的应用程序中做同样的事情,所以我似乎也将遇到这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多