标签: touch-event

DrawerLayout 阻止调用 MainActivity.onTouchEvent()

我有一个应用程序可以覆盖 的onTouchEvent(MotionEvent ev)MainActivity确定Two-Finger-SwipePich-Open/ Pinch-Close。一切正常,直到我将其添加到应用程序中(就像创建导航抽屉DrawerLayout中所述)。问题:阻止在 MainActivity 中调用。DrawerLayoutonTouchEvent()

我开始编写CustomDrawerLayout, 并尝试重写DrawerLayout方法onInterceptTouch()onTouchEvent()

TouchEvent(我发现)将其传输到 MainActivity 的唯一方法:

    // onTouchEvent of CustomDrawerLayout 
    @Override
    public boolean onTouchEvent(MotionEvent ev){
        // super.onTouchEvent(ev); // prevent transmission of TouchEvent
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

这里的问题是抽屉无法正确打开。抽屉卡住了,如这篇文章中所述: DrawerLayout getting 卡在 swipe 上

是否可以将 传输TouchEvent到 MainActivity 来处理 MultiTouchDetection?或者我必须处理这个问题CustomDrawerLayout

更新1

首先,我不得不说,如果我从左边缘滑动,抽屉只会卡住。通过单击ActionBar抽屉中的抽屉图标,效果很好。TouchEvent使用以下代码传输作品。但前提是抽屉打开了!否则Activity.onTouchEvent不叫!

    // onTouchEvent of …
Run Code Online (Sandbox Code Playgroud)

android touch-event drawerlayout

5
推荐指数
1
解决办法
2794
查看次数

同时检测父视图和子视图的 Android-Touch 事件

目前以下是我的应用程序的布局:

       LinearLayout
            ----Button
               ----ScrollView
                  ----RelativeLayout
                     ----EditText
Run Code Online (Sandbox Code Playgroud)

我在所有这些之上创建了一个透明的 LinearLayout,实现了 OnTouchListener 并在 OnTouch() 内部,返回 false。因此,所有控件都移动到子级下方。但是在 LinearLayout 上,我无法处理 ACTION_MOVE 操作,因为此布局不消耗 MotionEvent 对象。有什么方法可以检测父视图和子视图中的所有触摸事件吗?

android touch-event android-layout android-activity

5
推荐指数
1
解决办法
3154
查看次数

mousedown 事件不会在平板电脑/移动设备、HTML5 Canvas 上触发

我遇到了画布未在平板电脑上注册 mousedown 事件的问题,我已经尝试了一段时间但没有任何效果,甚至在代码中将 mousedown 更改为 touchstart,实现 Hammer.js、jquery mobile,任何帮助将不胜感激,一切都可以在桌面上运行,只是不需要触摸手势

var gestures = function(config){

var conf = {
    debug: true,
    draw: true,
    drawColor: "##f8f07e",
    drawWidth: 5,
    autoTrack: true,
    allowRotation: true,
    inverseShape: true,
    points: 33
};

var d;
var ctx;
var tracking = false;
var ob = this;

this.gestures = [];
this.points = [];

this.construct = function(){
    d = doc_size();
    //copying configuration
    for(var opt in config){
        conf[opt] = config[opt];
    }

    if(document.getElementById("gestures_canvas"))
    {
        ctx = document.getElementById("gestures_canvas").getContext("2d");
    }
    else if(conf.draw)
    {
        //create canvas for drawing …
Run Code Online (Sandbox Code Playgroud)

html javascript mouseevent touch-event

5
推荐指数
1
解决办法
9369
查看次数

Android EditText - 可编辑但不可选择?

是否可以使 EditText 可编辑但不可选择?我希望能够编辑一些文本,然后将其拖动到页面上。它可以工作,但是当您拖动它时,这会被视为长按,因此它会选择一些文本。

我是否必须做一些事情,比如当我单击 EditText 时显示另一个视图,让其捕获触摸事件,然后在事件操作启动时将其隐藏并将焦点返回到 editText?这看起来很古怪/过于复杂。

android selectable touch-event android-edittext

5
推荐指数
1
解决办法
3928
查看次数

是否可以通过触摸事件实现“输入”事件检测?

我需要执行以下操作

  1. 用户单击屏幕上的正方形。
  2. 有相邻的方块,因为它是一个网格,然后用户可以在不释放鼠标的情况下移动到相邻的方块,我需要检测鼠标进入这个新的方块以激活下一个,在第一次移动之后,移动的方向变得固定。
  3. 重复,直到鼠标被释放,当鼠标被释放时,检查是否匹配,仅此而已。

我已经用onmousedownonmouseenter和很好地实现了这一点,并在我处理最后一步的文档中onmouseleave添加了。onmouseup

问题是,我需要它在移动设备上工作。我已经成功地用,div组合实现了拖动,而且很简单。现在我尝试实现上述行为,但我发现,touchstarttouchmove

  • 不再存在 atouchentertouchleave事件,并且touchmove显然只有在目标已经发生touchstart事件时才会触发。

令人沮丧的是,没有无缝的方法可以做到这一点,我确实知道触摸设备与鼠标不同,但我认为应该对待一些常见的行为没有太大区别,并且只区别对待每个设备的特殊事物有。

如果有办法做到这一点,我真的会很感激,因为我非常厌倦阅读文档和尝试看似解决问题但实际上没有解决的事情。

根据评论中的要求,这是我的网格 在此输入图像描述

请注意,这个网格不是静态的,也不是直接使用 HTML 创建的,它是从文件中提取并使用不同的程序生成的,它只是一个<table>.

javascript mouseevent touch-event

5
推荐指数
1
解决办法
1768
查看次数

如何使用 touchmove 使 mousemove 事件适用于触摸屏?

我正在开发一个画布 JavaScript,通过 mousemove 事件你可以擦除背景......

现在我正在尝试在触摸屏(移动设备)上获得相同的体验。如何同时为我的代码提供 mousemove 和 touchmove 事件?

(function() {
  // Creates a new canvas element and appends it as a child
  // to the parent element, and returns the reference to
  // the newly created canvas element


  function createCanvas(parent, width, height) {
    var canvas = {};
    canvas.node = document.createElement('canvas');
    canvas.context = canvas.node.getContext('2d');
    canvas.node.width = width || 100;
    canvas.node.height = height || 100;
    parent.appendChild(canvas.node);
    return canvas;
  }



  function init(container, width, height, fillColor) {
    var canvas = createCanvas(container, width, height); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery canvas mouseevent touch-event

5
推荐指数
1
解决办法
7515
查看次数

使用移动设备的触摸事件模拟拖放事件

前段时间,我在移动设备上的网络浏览器中进行拖放操作时遇到了困难。默认的 JavaScript 事件在移动设备上不起作用。您只能使用触摸事件。

就我而言,我需要通过拖放来交换两个图像以及 ID。这里有一个例子:

div{
  display:inline-block;
  border:1px solid #0b79d0;
}

div, img{
        width:120px;
        height:120px;
    }
Run Code Online (Sandbox Code Playgroud)
<div id="1" ondragover="allowDrop(event)" ondrop="drop(event)" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" draggable="false">
    <img id="a" draggable="true" ondragstart="dragStart(event)" src="https://static.webshopapp.com/shops/073933/files/156288269/345x345x1/artibalta-white-tiger.jpg"/>
</div>

<div id="2" ondragover="allowDrop(event)" ondrop="drop(event)" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" draggable="false">
    <img id="b" draggable="true" ondragstart="dragStart(event)" src="https://yt3.ggpht.com/a-/AN66SAyfsmao4f1EEOqkBP2PgpSUcabPJXLZ1sLEnA=s288-mo-c-c0xffffffff-rj-k-no"/>
</div>

<div id="3" ondragover="allowDrop(event)" ondrop="drop(event)" ondragenter="dragEnter(event)" ondragleave="dragLeave(event)" draggable="false">
    <img id="c" draggable="true" ondragstart="dragStart(event)" src="https://kinderbilder.download/wp-content/uploads/2018/10/animals-for-dolphin-drawings-pencil-drawings-pinterest-verwandt-mit-delfine-zeichnen-100x100.jpg"/>
</div>

<script>
    function allowDrop(ev){
        ev.preventDefault();
    }

    function dragEnter(ev){
        var element = document.getElementById(ev.target.id);
        element.style.border = "dotted";
        element.style.borderColor = "#0b79d0";
    }

    function dragLeave(ev){
        var element = document.getElementById(ev.target.id);
        element.style.border …
Run Code Online (Sandbox Code Playgroud)

javascript mobile drag-and-drop touch-event

5
推荐指数
1
解决办法
1万
查看次数

反应原生触发/模拟触摸事件

如何在 React Native 中模拟触摸事件?

基本上我有 onPress 事件的 X 和 Y 坐标,并且想在同一位置再次触发触摸事件。

这在 JavaScript 中是可行的

document.elementFromPoint(x, y).click();
Run Code Online (Sandbox Code Playgroud)

但在RN可行吗?

javascript event-handling touch-event reactjs react-native

5
推荐指数
0
解决办法
1272
查看次数

手机网页长按的触摸事件是什么?

我可以通过事件开始长按touchstarttouchend但是,长按完成后、出现右键菜单或关闭右键菜单时,它不会触发。

如何检测长按何时完成?

javascript web-frontend touch-event long-press

5
推荐指数
0
解决办法
3988
查看次数

jQuery Mobile + Backbone tap事件触发两次

这是我在视图中定义事件的位置:

events : {
            "tap #exerciseProgressBarContainer" : 'progressBarClick'
        },
Run Code Online (Sandbox Code Playgroud)

这是行动:

    progressBarClick : function() {
        // start?
        if(this.curWorkoutExercise.isTimed() && !this.curExerciseStartTime) {
            HTMLHelper.endGlow(this.$('#exerciseProgressBarContainer .progressBar.overlay'));
            this.startExerciseProgressTimer();
        }
        // done?
        else {
            this.stopExerciseProgressTimer();

            // save the log
            this.addCurExerciseLog();

            this.startBreak();
            this.nextAction();
        }
    },
Run Code Online (Sandbox Code Playgroud)

基本上,在第一次点击时,用户启动进度计时器,并在其启动后,另一次点击完成它.在我的iPhone和我的Android上发生的事情是点击事件触发两次,同时启动和停止进度条.任何想法为什么会发生这种情况以及如何解决它?注意:我已经尝试过交换tapvclick.

非常感谢!

jquery touch-event jquery-mobile backbone.js

4
推荐指数
1
解决办法
1379
查看次数