栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将水平滚动与WebView结合使用时的滚动优先级

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将水平滚动与WebView结合使用时的滚动优先级

竞技场的规则似乎已经改变。现在,竞技场宣布具有主动接收器的手势将获胜。确实,这甚至可以进一步增加手势的响应速度。但是,由于本机视图不声明手势,仅当没有其他活动的检测器/接收器声明手势时才使用手势,因此我怀疑垂直拖动甚至不会从WebView作为手势进入竞技场。这就是为什么任何轻微的水平拖动都会导致水平拖动手势获胜的原因-
因为根本没有其他小部件可以要求任何手势。

您可以扩展

VerticalDragGestureRecognizer
,使其接受手势:

class PlatformViewVerticalGestureRecognizer    extends VerticalDragGestureRecognizer {  PlatformViewVerticalGestureRecognizer({PointerDeviceKind kind})      : super(kind: kind);  Offset _dragDistance = Offset.zero;  @override  void addPointer(PointerEvent event) {    startTrackingPointer(event.pointer);  }  @override  void handleEvent(PointerEvent event) {    _dragDistance = _dragDistance + event.delta;    if (event is PointerMoveEvent) {      final double dy = _dragDistance.dy.abs();      final double dx = _dragDistance.dx.abs();      if (dy > dx && dy > kTouchSlop) {        // vertical drag - accept        resolve(GestureDisposition.accepted);        _dragDistance = Offset.zero;      } else if (dx > kTouchSlop && dx > dy) {        // horizontal drag - stop tracking        stopTrackingPointer(event.pointer);        _dragDistance = Offset.zero;      }    }  }  @override  String get debugDescription => 'horizontal drag (platform view)';  @override  void didStopTrackingLastPointer(int pointer) {}}

之后,您可以在中使用新类

gestureRecognizers

PageView.builder(  itemCount: 5,  itemBuilder: (context, index) {    return WebView(      initialUrl: 'https://flutter.dev/docs',      gestureRecognizers: [        Factory(() => PlatformViewVerticalGestureRecognizer()),      ].toSet(),    );  },);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号