我想处理WebView控件上的click / tap事件
我已经尝试过GestureRecognizers,但没有任何反应,我想也许WebView可能会使事件处理“真实”。
<WebView>
<WebView.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnWebViewClick"
NumberOfTapsRequired="1" />
</WebView.GestureRecognizers>
</WebView>
我也尝试使用c#代码,但没有运气:/
答案 0 :(得分:2)
我正在使用此hack:将WebView放入网格并在同一单元格中插入BoxView。然后在BoxView上放置一个处理程序。
答案 1 :(得分:1)
手势识别器不适用于WebView。您可以尝试使用MR.Gestures
要获得所有功能,您必须购买许可证。
如果您忘记正确配置许可证密钥或密钥与您的应用名称不匹配,则仍会引发所有事件,但EventArgs的属性将为空。这对于点击和长按事件来说可能就足够了,但对于更复杂的事件则不然。
答案 2 :(得分:1)
另一种选择是处理html中的单击并执行不会在任何地方进行的导航。您可以在HTML中放入这样的内容
<div onclick="window.location.href='#click#'">...</div>
因此,在其中的任何位置单击都会导致导航。如果只有按钮,则可以使用
<a href='#click'>...</a>
然后在WebView控件中连接“导航”事件,并检查新的URL是否包含“ #click”。如果是这样,请执行点击处理代码,并在事件中调用e.Cancel = true,以防止浏览器完成导航。
请注意,onclick处理程序不适用于Xamarin Webview中的正文或文档元素。至少不是在iOS上。
答案 3 :(得分:0)
一个更简单的解决方法是在Web视图上使用“关注”事件。您可以按以下方式实现它:
var wb = new WebView
{
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand,
Source = "https://stackoverflow.com/questions/56320611/webview-gesturerecognition-not-working-in-xamarin-forms",
};
wb.Focused += (s, e) =>
{
//Handle your logic here!
wb.Unfocus();
};