xamarin 降低Swipeview敏感度.Net Maui

fwzugrvs  于 4个月前  发布在  .NET
关注(0)|答案(1)|浏览(72)

我不想necro一个old post,所以我创建了一个新的。我有一个collectionview,有两个按钮在任何一方增加或减少计数,按钮的工作,但他们是一个很难触发,因为我的swipeview左,右项目不断触发,而试图点击按钮。这种情况发生在每3-5次试图点击按钮,有没有一种方法来调整你有多远,水平滑动前swipeview激活?

uinbv5nw

uinbv5nw1#

我也面临着像你一样的问题,并有一个解决方案的问题。因为刷卡太敏感,设备很容易算作刷卡,而不是点击,如果拇指移动一点点。
它可以使用带有公共属性Offset的OnSwipeChanging事件和OnSwipeEnded事件来测量滑动的移动距离。每当调用OnSwipeChanging事件时,Offset的值都会不断更新。当用户停止滑动时,OnSwipeEnded会获取Offset的值,如果Offset小于特定值,则调用点击动作。
XAML

<SwipeView SwipeChanging="OnSwipeChanging" SwipeEnded="OnSwipeEnded">
    <SwipeView.LeftItems>
        <SwipeItemView>
            <Grid WidthRequest="100" />
        </SwipeItemView>
    </SwipeView.LeftItems>
    <SwipeView.RightItems>
        <SwipeItemView>
            <Grid WidthRequest="100" />
        </SwipeItemView>
    </SwipeView.RightItems>
          
    <Frame HeightRequest="50">
         <Frame.GestureRecognizers>
             <TapGestureRecognizer NumberOfTapsRequired="1" Tapped="OnTapped" />
         </Frame.GestureRecognizers>
    </Frame>                               
</SwipeView>

字符串
C#语言

public partial class TestView : ContentPage
{
    public double OffSet { get; set; } = 0
   
    public TestView()
    {
        InitializeComponent();
    }

    public void OnSwipeChanging(object sender, SwipeChangingEventArgs args)
    {
        OffSet = args.Offset;
        var swipeView = (Microsoft.Maui.Controls.SwipeView)sender;

        if (args.SwipeDirection == SwipeDirection.Left && offSet < -50)
        {
            //swipe left action here
        }
        else if (args.SwipeDirection == SwipeDirection.Right && offSet > 50)
        {
            //swipe right action here
        }
    }

    public void OnSwipeEnded(object sender, SwipeEndedEventArgs args)
    {
        var swipeView = (SwipeView)sender;

        if (offSet < 5 && offSet > -5)
        {
            //click button action
            OnTapped();
        }
        swipeView.Close();
    }
}

相关问题