我不想necro一个old post,所以我创建了一个新的。我有一个collectionview,有两个按钮在任何一方增加或减少计数,按钮的工作,但他们是一个很难触发,因为我的swipeview左,右项目不断触发,而试图点击按钮。这种情况发生在每3-5次试图点击按钮,有没有一种方法来调整你有多远,水平滑动前swipeview激活?
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(); } }
型
1条答案
按热度按时间uinbv5nw1#
我也面临着像你一样的问题,并有一个解决方案的问题。因为刷卡太敏感,设备很容易算作刷卡,而不是点击,如果拇指移动一点点。
它可以使用带有公共属性Offset的OnSwipeChanging事件和OnSwipeEnded事件来测量滑动的移动距离。每当调用OnSwipeChanging事件时,Offset的值都会不断更新。当用户停止滑动时,OnSwipeEnded会获取Offset的值,如果Offset小于特定值,则调用点击动作。
XAML
字符串
C#语言
型