【问题标题】:How to intercept UIScrollView scrolling event?如何拦截 UIScrollView 滚动事件?
【发布时间】:2017-02-15 15:20:56
【问题描述】:

在 Xamarin 中! Scrolled 被解雇,但它不包含 X 和 Y 信息。我需要知道何时滚动视图以调整某些视图以使它们看起来好像没有移动。 DraggingEnded 仅在滚动结束时触发,为时已晚。如何在更改后立即接收?

【问题讨论】:

    标签: ios xamarin uiscrollview xamarin.ios


    【解决方案1】:
    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();
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      在您的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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-10
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多