我想知道当用户已经结束了一个Webview上的滚动显示条款和条件显示一个“接受”按钮,只有当用户阅读此。
<StackLayout Spacing="0" BackgroundColor="{StaticResource WhiteColor}">
<CustomView:HeaderView VerticalOptions="Start" LeftImageSource="{Binding LeftImage}" RightImageSource="{Binding RightImage}" LeftCommand="{Binding LeftClickCommand}" RightCommand="{Binding RightClickCommand}" HeaderText="{Binding ScreenTitle}" PrevText="{Localize:ETranslate PrevText}" />
<WebView Source="{Binding Html, Converter={StaticResource HtmlSourceConverter}}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</StackLayout>
个字符
我曾尝试使用Renderer来实现这一点,但在iOS中WkWebViewRenderer没有WebViewRenderer中可用的Scrolled()方法。
在Xamarin.Forms中有什么方法可以实现这一点吗?
3条答案
按热度按时间js5cn81o1#
WKWebView内部有一个属性
ScrollView
,所以我们可以用它覆盖Delegate。WKWebViewRenderer代码
字符串
它在我这边工作得很好,参考https://stackoverflow.com/a/52872317/8187800。
5uzkadbs2#
我已经得到了Android的解决方案以及.这里是整个解决方案,希望这可能是有帮助的人寻找相同的!
MyPage.xaml
字符串
ScrollWebView控件
型
Android:ScrollWebViewRenderer
型
iOS:ScrollWebViewRenderer
型
vwoqyblh3#
在实现这个答案之后,https://stackoverflow.com/a/66931493/15125666我仍然在android渲染器上遇到麻烦,因为它没有检测到用户何时到达WebView的底部。
要解决这个问题,您需要在计算中添加一个缓冲区,这将在内容高度乘以比例时考虑任何潜在的浮点错误。
以下是Android:ScrollWebViewRenderer的更新代码
字符串
这里我添加了一个动态的bottomThresholdbuffer,并将其用于cutOff计算。它在计算中添加了一个小的buffer,以确保即使很小的差异也不会阻止到达底部的检测。