xamarin.forms在WebView上处理Clicked事件

时间:2015-05-22 12:45:01

标签: xamarin.forms

我想处理WebView控件上的click / tap事件

我已经尝试过GestureRecognizers,但没有任何反应,我想也许WebView可能会使事件处理“真实”。

<WebView>
   <WebView.GestureRecognizers>
      <TapGestureRecognizer
              Tapped="OnWebViewClick"
              NumberOfTapsRequired="1" />
   </WebView.GestureRecognizers>
</WebView>

我也尝试使用c#代码,但没有运气:/

4 个答案:

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