Это отлично работает для меня, оба значения совпадают в конце прокрутки:
private void ScrollView_OnScrolled(object sender, ScrolledEventArgs e)
{
var scrollView = sender as ScrollView;
try
{
var contentSize = scrollView.ContentSize.Height;
var contentSizeCheck = ((View) scrollView.Children[0]).Height; //for fun
var maxPos = contentSize - scrollView.Height;
Debug.WriteLine($"Scrolled to pos {e.ScrollY}, max: {maxPos}");
}
catch
{
}
}
Также не уверен, что на вас что-то влияет следующее, но учтите, что на iOS есть некоторые ошибка, из-за которой ScrollView стремится установить свою позицию иногда на отрицательное значение, это можно исправить с помощью средства визуализации в
protected override void OnElementChanged(VisualElementChangedEventArgs e)
, установив симпатичное ((ScrollView)e.NewElement).SetScrolledPosition(0, 0);
, это отключит подпрыгивая хотя ..