【问题标题】:Xamarin Forms Pinch to zoom event not raisedXamarin Forms Pinch 未引发缩放事件
【发布时间】:2020-05-27 21:18:20
【问题描述】:

我一直在尝试使用 WebView 实现一个页面,并在捏合时执行一些自定义代码以进行缩放。 但不会引发“PinchGestureRecognizer”的“PinchUpdated”事件。

页面:

<ContentPage.Content>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <WebView Grid.Column="0" Grid.Row="0" Source="https://google.com/" />
    </Grid>
</ContentPage.Content>

代码:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyPage : ContentPage
{
    private PinchGestureRecognizer pinchRecognizer = new PinchGestureRecognizer();

    public MyPage()
    {
        InitializeComponent();

        this.pinchRecognizer.PinchUpdated += this.HandlePinchUpdated;
    }

    private void HandlePinchUpdated(object sender, PinchGestureUpdatedEventArgs e)
    {
        // Do something
    }
}

当我在事件中设置断点时,它不会被击中。 不在模拟器或真实设备上。

有什么建议吗?

【问题讨论】:

标签: c# android xamarin.forms


【解决方案1】:

按照您的说法,我认为您的问题在于如何针对 webviews 处理事件。默认情况下,如果您尝试在 webview 的框架内捏缩放,它只会影响 webview 中的 html。 如果您不打算与 webview 交互,请尝试在整个 Webview 的顶部放置一个遮罩(BoxView),然后将捏缩放应用到遮罩框。

【讨论】:

  • 好的,但这意味着用户无法与 Web 视图交互。我只需要捏缩放事件。我的用例是该应用程序将显示一个响应式的固定网站,因此不会使用缩放。我希望用户能够切换到配置页面。
  • 哦,好的,我明白你现在在说什么了。不幸的是,因为您实际上是在制作一个混合应用程序,所以您的所有交互都必须通过 web 视图中的 JavaScript 处理。要与应用程序通信,您将需要使用混合 Web 视图,Xamarin 尚不支持该视图,但可以构建。这是一个关于如何做到这一点的好文档。 docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…
  • 感谢您的解释。对于我的用例来说,这似乎有点矫枉过正。我会考虑另一种进入配置的方法:)
  • 没问题。如果您想显示一些简单的 html,您也可以使用标签。您会惊讶于它可以占用多少 html。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多