微信 判断 上滑 下滑 操作

1:判断用户动作,“向上滑动” 或者 “向下滑动”,闲话不多说,直接上代码:

  方法1 ( 利用 bindtouchmove,缺点:可能会频繁操作 setData 方法 ) :

<view
      wx:for="{{list}}"
      id="{{item}}"
      wx:key="{{index}}"
      bindtouchmove="checktouchmove"
      class="knowledgeNodes">
      {{item}}
</view>

  

// 知识点 : bindtouchmove , 弊端 特别频繁的操作 setData 方法
Page({
  data: {
    lastX: 0,          // 滑动开始x轴位置
    lastY: 0,          // 滑动开始y轴位置
  },

 // 判断用户动作,上滑或者下滑
 checktouchmove: function(event){
  var currentX = event.touches[0].pageX
  var currentY = event.touches[0].pageY
  var tx = currentX - this.data.lastX
  var ty = currentY - this.data.lastY
  var text = ""
  if (Math.abs(tx) <= Math.abs(ty)) {
    // 上下方向滑动    if (ty < 0){
	    text = "向上滑动"       // 操作 setData 方法改变 data 值
    }else if (ty > 0){
	    text = "向下滑动"       // 操作 setData 方法改变 data 值 
    }
  }
  console.log(text);
  //将当前坐标进行保存以进行下一次计算
  this.data.lastX = currentX
  this.data.lastY = currentY
 }

})  

   方法2 ( 利用 bindtouchstart,bindtouchend,推荐用法,原因:用户开始滑动和结束滑动都是分别只有一个事件,消除了频繁操作setData的可能性 ) :

        // 判断用户动作,上滑或者下滑, data 中添加 firstTopY, lastTopY 两个参数
        // wxml中绑定事件 bindtouchstart = "moveStart" bindtouchend = "moveEnd"
	moveStart: function(ent){
		console.log(ent)
		this.setData({
			firstTopY: ent.changedTouches[0].pageY
		})
	},
	moveEnd: function(ent){
		console.log(ent)
		this.setData({
			lastTopY: ent.changedTouches[0].pageY
		})
		if(this.data.lastTopY > this.data.firstTopY){
			console.log(‘下滑‘);
		}else if(this.data.lastTopY < this.data.firstTopY){
			console.log(‘上滑‘);
		}else{
			console.log(‘没动‘);
		}
	}

  希望你能看懂,看懂的点个赞哦!!!看不懂的留言给源码!!!

原文地址:https://www.cnblogs.com/heshaoxu/p/9542798.html

时间: 2024-08-13 13:21:42

微信 判断 上滑 下滑 操作的相关文章

微信小程序监听用户上滑下滑事件

今天做了一个要根据用户上滑或者下滑来显示不同内容的功能. 思路:先监听用户是上滑还是下滑,监听到结果后改变data数据中用来判断模块显示隐藏的变量,两个需要切换的模块使用两个hidden,data中定义两个变量来接受更改后的true或者false 页面 hidden='{{bottom}}' hidden='{{top}}' data{ //初始化状态 top:true, bottom:false, } //判断浏览器滚动条上下滚动 if (t.scrollTop > a.data.scroll

移动端监听上滑下滑(判断元素是否滚动到底部)

touchUp(){             var startY = 0; let that = this;             document.addEventListener("touchstart",function(e){                 startY = e.changedTouches[0].pageY;             },false);             document.addEventListener("touchmo

移动端上滑下滑换图片

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-sc

ListView 条目加载上滑下滑首尾缩放动画实现

要实现这个效果,只需要再适配器getView之前,给每个条目的view设置相应的动画即可. 首先需要2个动画的xml文件. 在res下新建anim文件夹:(res/anim) 第一个动画xml文件: up_from_bottom.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android&

取消在微信里面上拉拖动或者下拉拖动看到的空白。(也是什么橡皮筋效果)

场景: 如果页面里面的背景是一个图片(如下图)或者是背景颜色来着,那么上拉或者下拉就看到底层白色的背景可能很烦. 下面是vue里面用具体代码, 因为我是全页面都是颜色做背景,所以我就直接在App.vue里面写全局了. methods: { cancel_scoll_boune() { var startY,endY document.querySelector('body').addEventListener("touchstart",function (evt) { startY =

RecyclerView 滑动检测 (上滑 up)(下滑 down)(顶部 top)(底部 bottom)

RecyclerView 给我们的可以检测滑动事件的接口 只有 一个方法 recyclerview.setOnScrollListener()或者 recyclerview.addOnScrollListener() set方法将会被弃用 deprecated 最好使用add方法但是这个也可以根据自己情况,如果自己当前的api中set方法没有被弃用,不存在add方法.就只能使用set方法了. 监听 上滑,下滑 这些都不是重点,接下来就分析如何监听,RecyclerView的滑动. Recycle

iOS 上滑隐藏导航,下滑显示导航,仿斗鱼导航效果

UItableView或 UIcollectionView 都是继承UIScrollView 滑动的时候,判断是上滑还是下滑 使用 UIScrollView 的代理方法 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 } span.s1 { color: #ba2da2 } span.s2 { } span.s3 { color: #703daa } func scrollViewWillEnd

Android 上滑显示底部导航,下滑显示标题bar

本文简单介绍使用属性动画来实现上滑显示底部导航,下滑显示标题bar.先上图看效果,再分析: 可以看出这是个listview有标题和底部,有点像下拉刷新和上拉加载更多.只不过下拉或上拉一定时位置固定拉不动,且只在list的第一个item出现显示时,才平滑动画的让标题或底部显示或隐藏. 实现思路: 1.整个布局有三个部分构成,上部由一个RelativeLayout放ImageView或TextView.中间部分是个listView,下部是一个TextView. 2.采用LinearLayout摆放中

Android 浮动按钮+上滑隐藏按钮+下滑显示按钮

1.效果演示 1.1.关注这个红色的浮动按钮 . 可以看到,上滑的时候浮动按钮消失,因为用户迫切想知道下面的东西,而不是回到顶部. 当下滑的时候,用户想回到原来的位置,就可以点击浮动按钮,快速回到顶部.所以浮动按钮弹上来了. 2.定义一个动画通用类AnimatorUtil 2.1.源代码如下 public class AnimatorUtil { private static LinearOutSlowInInterpolator FAST_OUT_SLOW_IN_INTERPOLATOR =