我正在使用针对iOS,Android和UWP的Xamarin.forms开发应用程序。我无法同时使触摸和滑动听众同时工作。
我有一个带有一堆按钮的视图,其中有一些按钮是孩子的。我需要能够左右滑动该视图,还可以触摸按钮。
我尝试了多种方法:
尝试#1)在背景父视图上设置SwipeListener。如果用户首先触摸一个子按钮,则该按钮不起作用。因为孩子的z位置较高,所以他们拦截了触摸事件。
尝试#2)在位于所有内容顶部的视图上设置SwipeListener。滑动即可,但是我无法点击任何按钮。设置此视图的InputTransparent =“ False”将允许我点击按钮,但随后Swipe停止工作。
尝试#3)这几乎奏效。设置非常类似于尝试1,即背景父视图上的SwipeListener。不同之处在于每个按钮都没有Click事件。相反,我在每个按钮上使用了TapGestureRecognizer。这在UWP和iOS上效果很好。没有冲突。但是在Android上,如果您在滑动开始时触摸一个按钮,则滑动将无法按预期进行。它不一致地起作用,不执行任何操作或向错误的方向滑动。
我只发布一些代码。如果需要,我可以发布更多。但是,我希望可能会有一个有人知道的高级解决方案可以解决此问题。预先感谢您的关注。
//How I set my buttons' touch recognizer
var touchRecognizer = new TapGestureRecognizer { NumberOfTapsRequired = 1 };
touchRecognizer.Command = myViewModel.DayButtClickedCommand;
touchBox.GestureRecognizers.Add(touchRecognizer);
//How I set the swipe recognizer
SwipeListener swipeListener = new SwipeListener(MainHompageStackLayout);
swipeListener.SwipedLeft += swipedLeft;
swipeListener.SwipedRight += swipedRight;
答案 0 :(得分:0)
我终于找到了可行的解决方案。万一它对任何人有用...
尝试#3距离不远。这是我当前的设置:
我在iOS模拟器上进行了测试,并安装在Google Pixel XL和Surface Book的UWP上。现在只需滑动并触摸所有作品即可。
总而言之,我认为我的问题是两件事: