0
在Xamarin! Scrolled
被解雇,但它不包含X和Y信息。我需要知道何时滚动视图以调整某些视图,以使它们看起来不会移动。只有当滚动结束时才会触发DraggingEnded
,这太迟了。如何尽快收到更改?如何拦截UIScrollView滚动事件?
在Xamarin! Scrolled
被解雇,但它不包含X和Y信息。我需要知道何时滚动视图以调整某些视图,以使它们看起来不会移动。只有当滚动结束时才会触发DraggingEnded
,这太迟了。如何尽快收到更改?如何拦截UIScrollView滚动事件?
public class ScrollViewDelegate : UIScrollViewDelegate
{
public ScrollViewDelegate()
{
//...
}
public override void DraggingStarted(UIScrollView scrollView)
{
System.Diagnostics.Debug.WriteLine("Dragging started offset: " + scrollView.ContentOffset);
}
}
[assembly: ExportRenderer(typeof(SomeScrollViewControl), typeof(SomeScrollView))]
namespace SomeNamespace
{
public class SomeScrollView : ViewRenderer<SomeScrollViewControl, SomeScrollView>
{
public SomeScrollView()
{
//...
}
protected override void OnElementChanged(ElementChangedEventArgs<SomeScrollViewControl> e)
{
if (e.OldElement == null)
{
//Create someScrollView...
someScrollView.Delegate = new ScrollViewDelegate();
}
}
}
}
在您的UIScrollView
子类中,覆盖ContentOffset
属性并监视set
,您将在用户滚动/平移时获得视图的新X/Y。
public override CoreGraphics.CGPoint ContentOffset
{
get
{
return base.ContentOffset;
}
set
{
Console.WriteLine($"{value.X}:{value.Y}");
base.ContentOffset = value;
}
}
输出:
39.0704398717043:41.4920965388485
35.3280093038005:36.4695722954986
31.736242067681:31.6492455873442
28.1199544514634:26.7960113338755
24.5949600095583:22.0652969703334
21.2827079155381:17.6200932075763
17.9479795925504:13.1447252499626