2017-02-14 4 views
0

Xamarin! Scrolledが発生しますが、XとYの情報は含まれていません。私は彼らが移動していないように見えるようにいくつかのビューを調整するために、ビューがスクロールされるときを知る必要があります。 DraggingEndedは、スクロールが終了して遅すぎる場合にのみ起動されます。変更をすぐに受け取る方法は?UIScrollViewスクロールイベントをインターセプトする方法はありますか?

答えて

0
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(); 
      } 
     } 
    } 
} 
0

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 
関連する問題