Xamarin形成不适合视图的手势

时间:2016-08-01 21:13:53

标签: c# xamarin xamarin.forms gestures

我在使用xamarin手势时遇到一些麻烦。我使用了一个我在网上发现的一个例子,它将一个Image控件包装在一个处理平移手势的PanContainer中:

using System;
using Xamarin.Forms;

namespace TestGestures
{
    public class PanContainer : ContentView
    {
        double x, y;

        public PanContainer ()
        {
            // Set PanGestureRecognizer.TouchPoints to control the 
            // number of touch points needed to pan
            var panGesture = new PanGestureRecognizer ();
            panGesture.PanUpdated += OnPanUpdated;
            GestureRecognizers.Add (panGesture);
        }

        void OnPanUpdated (object sender, PanUpdatedEventArgs e)
        {
            switch (e.StatusType) {

            case GestureStatus.Running:
                // Translate and ensure we don't pan beyond the wrapped user interface element bounds.
                Content.TranslationX = Math.Max (Math.Min (0, x + e.TotalX), -Math.Abs (Content.Width - App.ScreenWidth));
                Content.TranslationY = Math.Max (Math.Min (0, y + e.TotalY), -Math.Abs (Content.Height - App.ScreenHeight));    
                break;

            case GestureStatus.Completed:
                // Store the translation applied during the pan
                x = Content.TranslationX;
                y = Content.TranslationY;
                break;
            }
        }
    }
}

包装用法:

public HomePageCS ()
{
    Content = new AbsoluteLayout {
        Padding = new Thickness (20),
        Children = {
            new PanContainer {
                Content = new Image {
                    Source = ImageSource.FromFile ("MonoMonkey.jpg"),
                    WidthRequest = 1024,
                    HeightRequest = 768
                }
            }   
        }
    };
}

这个例子非常好,完全没问题。

当我用一个继承自View并且每个平台都有一个客户渲染器的控件替换PanContainer中包含的图像时,问题就开始了。当我这样做时,OnPanUpdated方法永远不会被调用。

是否有人知道为什么会在View上发生这种情况,是否有任何解决方法可以让它发挥作用?

0 个答案:

没有答案