Xamarin.Forms.Maps 嵌套在 ScrollView 中。地图不可用,因为 ScrollView 正在拦截事件
Xamarin.Forms.Maps nested inside a ScrollView. Map not usable since ScrollView is intercepting events
Xamarin Android.
我已经搜索并尝试了其他线程的许多答案,但无法正常工作。
我一直在尝试使用 RequestDisallowInterceptTouchEvent(true);阻止我的父 ScrollView 吸收触摸事件并允许在嵌套在其中但未成功的 MapView 上平移。
这是我目前在 Android
的 Maps Customer Renderer 中所做的
private IViewParent _scrolLView;
private IViewParent GetParentScrollView(IViewParent parent)
{
if (parent is ScrollViewRenderer)
return parent;
return GetParentScrollView(parent.Parent);
}
public override bool DispatchTouchEvent(MotionEvent e)
{
GetParentScrollView(Parent).RequestDisallowInterceptTouchEvent(true);
return base.DispatchTouchEvent(e);
}
但是当我尝试在地图上平移时,滚动视图仍然拦截并滚动。
RequestDisallowInterceptTouchEvent 在 child 不希望此 parent 及其祖先拦截触摸事件时调用。
试试把GetParentScrollView(Parent)
改成this
,我这边行得通。
public override bool DispatchTouchEvent(MotionEvent e)
{
this.RequestDisallowInterceptTouchEvent(true);
return base.DispatchTouchEvent(e);
}
Xamarin Android.
我已经搜索并尝试了其他线程的许多答案,但无法正常工作。
我一直在尝试使用 RequestDisallowInterceptTouchEvent(true);阻止我的父 ScrollView 吸收触摸事件并允许在嵌套在其中但未成功的 MapView 上平移。
这是我目前在 Android
的 Maps Customer Renderer 中所做的private IViewParent _scrolLView;
private IViewParent GetParentScrollView(IViewParent parent)
{
if (parent is ScrollViewRenderer)
return parent;
return GetParentScrollView(parent.Parent);
}
public override bool DispatchTouchEvent(MotionEvent e)
{
GetParentScrollView(Parent).RequestDisallowInterceptTouchEvent(true);
return base.DispatchTouchEvent(e);
}
但是当我尝试在地图上平移时,滚动视图仍然拦截并滚动。
RequestDisallowInterceptTouchEvent 在 child 不希望此 parent 及其祖先拦截触摸事件时调用。
试试把GetParentScrollView(Parent)
改成this
,我这边行得通。
public override bool DispatchTouchEvent(MotionEvent e)
{
this.RequestDisallowInterceptTouchEvent(true);
return base.DispatchTouchEvent(e);
}