Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnLongPress无法处理我们的触摸事件_Android_Xamarin_Xamarin.android_Touch Event - Fatal编程技术网

Android OnLongPress无法处理我们的触摸事件

Android OnLongPress无法处理我们的触摸事件,android,xamarin,xamarin.android,touch-event,Android,Xamarin,Xamarin.android,Touch Event,我正在开发一个游戏,在这个游戏中,当用户单触屏幕时,我想执行某些操作,当用户长按屏幕时,我想执行一些其他操作。为此,我创建了一个手势检测器类并向其添加事件 表面视图类 public MySurfaceView(Context context, IAttributeSet attrs):base(context, attrs) { this.context=context; SetWillNotDraw(false); gestureDete

我正在开发一个游戏,在这个游戏中,当用户单触屏幕时,我想执行某些操作,当用户长按屏幕时,我想执行一些其他操作。为此,我创建了一个手势检测器类并向其添加事件

表面视图类

public MySurfaceView(Context context, IAttributeSet attrs):base(context, attrs)
    {
        this.context=context;
        SetWillNotDraw(false);
        gestureDetector = new GestureDetector(context, new GestureListener());

    }

 public override bool OnTouchEvent(MotionEvent e)
    {
        Log.Debug(Tag, "Inside" + System.Reflection.MethodBase.GetCurrentMethod().Name + "Method");
        return gestureDetector.OnTouchEvent(e); 
    }
手势侦听器类

  private class GestureListener : GestureDetector.SimpleOnGestureListener
    {
        public override bool OnDown(MotionEvent e)
        {
            Log.Debug("Tag", "Inside Gesture OnDown Event");
            // don't return false here or else none of the other 
            // gestures will work
            return true;

        }

        public override bool OnSingleTapConfirmed(MotionEvent e)
        {
            Log.Debug("Tag", "Inside Gesture OnSingleTapConfirmed Event");

            return true;
        }

        public override bool OnDoubleTap(MotionEvent e)
        {
            Log.Debug("Tag", "Inside Gesture OnDoubleTap Event");
            return true;
        }

        public override void OnLongPress(MotionEvent e)
        {
            Log.Debug("Tag", "Inside Long Press Event");
        }




    }
除OnLongPress外的所有事件都使用上述代码。看完这篇评论之后。我必须为OnDown事件返回false。根据注释更新代码后,我的OnLongPress事件开始工作,但现在只有OnLongPress事件工作

   public override bool OnDown(MotionEvent e)
        {
            Log.Debug("Tag", "Inside Gesture OnDown Event");
            // don't return false here or else none of the other 
            // gestures will work
            return false;

        }
由于我需要所有事件一起工作,是否有任何方法可以使OnLongPress与其他事件一起工作。

将OnTouchEvent更改为以下内容:

 public override bool OnTouchEvent(MotionEvent e){
     Log.Debug(Tag, "Inside" + System.Reflection.MethodBase.GetCurrentMethod().Name + "Method");
     gestureDetector.OnTouchEvent(e); 
     return true;
}

您可以找到解释。

它工作了,但只是第一次,之后它将长按事件作为单触确认事件。任何建议。