【发布时间】:2017-01-20 00:31:56
【问题描述】:
在我的 Xamarin 应用程序中,基于状态,我需要向 Xamarin Forms 视图添加或删除平移/捏合手势识别器。这是一些伪代码:
public void enableGestures(Xamarin.Forms.View v, bool isEnable) {
if (isEnable) {
pinchgr += OnViewPinched;
pangr += OnViewPanned;
v.GestureRecognizers.Add(pinchgr);
v.GestureRecognizers.Add(pangr);
}else {
pinchgr -= OnViewPinched;
pangr -= OnViewPanned;
v.GestureRecognizers.Remove(pinchgr);
v.GestureRecognizers.Remove(pangr);
}
}
第一次,添加手势识别器可以正常工作。即使稍后删除它们也可以正常工作。但是,当我再次尝试添加它们时,我得到一个无效的操作异常“集合已修改;枚举操作可能无法执行。”
想知道是否有人知道如何克服这个问题。问候。
【问题讨论】:
-
你能显示真实代码而不是伪代码吗?不知道你为什么要做“pinchgr += OnViewPinched; pangr += OnViewPanned;”和“pinchgr -= OnViewPinched; pangr -= OnViewPanned;”
-
您能在枚举的
View循环中调用enableGestures吗?即stackoverflow.com/a/605390/4984832 如果没有您如何执行此操作的完整上下文,任何答案都只是猜测,但底线是枚举和修改同一个集合通常是不允许的。
标签: xamarin xamarin.forms