解决SlidingMenu和SwipeBackLayout右滑事件冲突问题

SwipeBackLayout向右滑动关闭当前Activity,SlidingMenu向右滑动则是打开menu部分。在同一个Activity中,当SlidingMenu处于打开状态时,此时向右滑动,事件会被SwipeBackLayout优先处理,导致屏幕上一大部分是menu,一小部分是Activity内容的时候居然是直接关闭当前Activity,显然,这不是用户所愿意看到的(正确操作场景为:当SlidingMenu处于打开状态,右滑先是相应SlidingMenu,慢慢关闭,然后再右滑时才是响应SwipeBackLayout关闭当前Activity,若SlidingMenu处于关闭状态,则直接响应SwipeBackLayout)。

考虑到SlidingMenu和SwipeBackLayout都各自有着自己的状态,且为了尽量耦合,可以进行如下处理(直接在当前Activity中重写dispatchTouchEvent,依据SlidingMenu状态设置SwipeBackLayout的可用状态):

 1 @Override
 2 public boolean dispatchTouchEvent(MotionEvent ev) {
 3     if (menu.isMenuShowing()) {
 4         if (mSwipeBackLayout.getEnableGesture()) {
 5             mSwipeBackLayout.setEnableGesture(false);
 6         }
 7     } else {
 8         if (!mSwipeBackLayout.getEnableGesture()) {
 9             mSwipeBackLayout.setEnableGesture(true);
10         }
11     }
12     return super.dispatchTouchEvent(ev);
13 }
时间: 2024-10-12 02:59:38

解决SlidingMenu和SwipeBackLayout右滑事件冲突问题的相关文章

小程序 手机左滑右滑事件监听

<view class="touch" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" ></view> // 触摸开始事件 touchStart: function (e) { touchDot = e.touches[0].pageX; // 获取触摸时的原点 // 使用js计时器记录时间 i

截获导航控制器系统返回按钮的点击pop及右滑pop事件

前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一年时间,希望写点东西练练手,还有希望可以分享给大家,希望大家一同讨论,提出宝贵意见以及更简单的实现.总体效果如下: 同时受@J_雨的轻松学习之——IOS利用Runtime自定义控制器POP手势动画一文影响,所以我们将用两种方法实现. 实现思路 每一个navigationController都自带有一

双击和单击事件冲突解决方法

双击和单击事件冲突解决方法:关于单击事件和双击事件,如果单独拿出来都是非常简单,这里也就不多介绍了,具体可以参阅jQuery的click事件和jQuery的dblclick事件一章节,但是如果同一个元素同时绑定了单击事件和双击事件,那么就会造成冲突现象,比如我们双击此元素指向触发双击事件,但是也完全满足单击事件的条件,不但双击事件触发了,单击事件同样也会被触发,下面就通过代码实例介绍一下如何解决它们的冲突问题,代码如下: <!DOCTYPE html> <html> <hea

JS获取鼠标左(右)滑事件

鼠标左(右)滑也是网站开发中常见的效果之一,这里对鼠标左(右)滑做出一些解释. 首先要获取需要左右滑事件的节点: eg: var div=document.getElementById("div"); 然后获取点击事件onmousedown并传参: eg: div.onmousedown=function(e){ } 在函数里写一个闭包来判断左右滑,这里需要获取鼠标的坐标,之后进行判断输出结果 eg: div.onmousedown=function(e){ var a1=e.scre

Android ListView焦点事件冲突问题与解决

Android ListView对于单纯列表展示是很好用的,但是一旦牵扯到对listView进行操作就会遇到各种各样的问题.比如保存Checkbox状态与item复用的冲突.遇到可获取焦点的控件比如说button.edxttext等与listView本身的点击事件冲突等.对于后者,这里不研究原因,只提供解决方案. 如果listView之中只有button这样会抢夺焦点的控件,最好的建议是直接把button换成Textview,直接规避焦点问题. 如果有些产品经理要求在listview的item中

关于使用navigationController,前后2个视图控制器navigationBar隐藏属性不同,导致右滑手势失效问题的解决办法

###1.问题描述:如A是navigationController的rootViewController,在这个页面navigationBar是显示的(隐藏属性为NO),它push圧栈过来B视图控制器,B页面navigationBar是不显示的(隐藏属性为YES),有一定几率会出现,B要右滑pop自己要圧栈A时,右滑手势会失效,即使B中设置 self.navigationController.interactivePopGestureRecognizer.enabled = YES也不起作用##

ios7自定义返回按钮后,右滑返回功能失效解决方法

-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开启ios右滑返回 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.delegate = n

从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法

本篇文章假设读者没有任何的触摸事件基础知识,所以我们会从最基本的触摸事件分发处说起. ScrollView为什么会出现嵌套EditText出现滑动事件冲突呢?相信你会有这种疑问,我们来看这么一种情况: 有一个固定高度的EditText,假设它只能显示3行文本,但是,我们在其中输入的文本多余三行时,那么这时就需要可以在EditText内部进行小幅滚动了.那么将这个EditText放入了ScrollView当中, 并且ScrollView内容过多以致ScrollView也可以滑动,这时候就会出现Ed

重写ListView解决ListView内部ViewPaper滑动事件冲突问题

很简单 重写ListView 其他类似问题解决ScrollView嵌套ViewPager出现的滑动冲突问题 http://blog.csdn.net/zhangyiacm/article/details/37903071 package com.zy.myview; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import androi