单纯使用js或者jq如何实现 手机web的长按事件 和按键事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单纯使用js或者jq如何实现 手机web的长按事件 和按键事件相关的知识,希望对你有一定的参考价值。
一个<li></li> 它有两个事件,当长按超过2秒后执行funtion b;单单点击他的时候 执行funtion a
如何做?
单纯的长按的,我会写,但是,两个都在一起的,长按完了 他会执行长按的事件,但是那个单击的时候也会执行,怎么解决?
var timeout = undefined;
var obj = document.getElementsByClassName('touch');
for (var i = 0; i < obj.length; i++)
obj[i].addEventListener('touchstart', function(event)
timeout = setTimeout(function()
var type = $(obj[i]).find('.AtFlag_s').val();
var info = "";
if (type == "0")
info = "您确定取消关注?"
else
info = "您即将关注该班级!";
AppDaliog.confirm(info, "", function()
update_Attention(obj[i]);
);
, 1500);
, false);
obj[i].addEventListener('touchend', function(event) //
clearTimeout(timeout);
, false);
上面代码是长按的代码,单击的就不写了 直接onclick的
var obj = document.getElementsByClassName('touch');
for (var i = 0; i < obj.length; i++)
obj[i].addEventListener('touchstart', function(event)
var i = 0;
var _this = $(this);
timer = setInterval(function()
i+=10;
if(i >= 1000)
i = 0;
lognPress();
else
//这里写onclick要执行的事件
,10)
);
obj[i].addEventListener('touchend', function(event)
clearTimeout(timer);
, false);
)
var time = 0;
function lognPress()
var type = $(obj[i]).find('.AtFlag_s').val();
var info = "";
if (type == "0")
info = "您确定取消关注?"
else
info = "您即将关注该班级!";
AppDaliog.confirm(info, "", function()
update_Attention(obj[i]);
);
追问
来晚了,我试了一下,发现是点击了就直接执行onclick的事件了,没有长按的,
我看了一下,发现这个代码逻辑有些问题啊,变量i,初始值0,每10秒变一次...那每次touchstar i都是为10的,也就是说不会去到i>=1000的
按钮上的长按事件[重复]
【中文标题】按钮上的长按事件[重复]【英文标题】:Long press event on button [duplicate] 【发布时间】:2013-01-18 06:28:51 【问题描述】:可能重复:How to detect tap on Uitableview cell with uiview and uibutton?UIButton Long Press Event
我正在通过表格自定义单元格加载按钮。如何识别用户是单击按钮还是长按按钮?
【问题讨论】:
你可以使用LongpressGestureRecognizer
...
【参考方案1】:
我只是谷歌它,我从堆栈溢出This得到了最佳答案
- (void)viewDidLoad
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[self.button addGestureRecognizer:longPress];
[longPress release];
[super viewDidLoad];
和事件:-
- (void)longPress:(UILongPressGestureRecognizer*)gesture
if ( gesture.state == UIGestureRecognizerStateEnded )
NSLog(@"Long Press");
【讨论】:
我的问题是自定义单元格中没有 viewDidLoad 仅在 Viewdidload 中添加此方法是不必要的。在您的自定义单元格中,您只需在您的自定义单元格代码中添加上面的代码,当您在 cellForRowAtindex 等中添加按钮时 分享你的代码我会编辑它 嗨 Nitin,我认为这是重复的问题,您应该将其标记为重复而不是给出答案。 它是*** Bro的新用户,我还提到了这个答案的链接,我只是在他们的代码中使用了方法:)'【参考方案2】:您可以从创建 UILongPressGestureRecognizer 实例并将其附加到按钮开始。
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[self.button addGestureRecognizer:longPress];
[longPress release];
然后实现处理手势的方法
- (void)longPress:(UILongPressGestureRecognizer*)gesture
if ( gesture.state == UIGestureRecognizerStateEnded )
NSLog(@"Long Press");
现在这将是基本方法。您还可以设置压力机的最短持续时间以及可以容忍的错误量。另请注意,如果您在识别手势后调用该方法几次,因此如果您想在结束时执行某些操作,则必须检查其状态并进行处理。
Reference
【讨论】:
【参考方案3】:- (void)setLongTouchAction:(SEL)newValue
if (newValue == NULL)
[self removeGestureRecognizer:longPressGestureRecognizer];
[longPressGestureRecognizer release];
longPressGestureRecognizer = nil;
else
[longPressGestureRecognizer release];
longPressGestureRecognizer = nil;
longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:[[self allTargets] anyObject] action:newValue];
[self addGestureRecognizer:longPressGestureRecognizer];
[undoButton addTarget:self action:@selector(performUndo:) forControlEvents:UIControlEventTouchUpInside];
[undoButton setLongTouchAction:@selector(showUndoOptions:)];
【讨论】:
以上是关于单纯使用js或者jq如何实现 手机web的长按事件 和按键事件的主要内容,如果未能解决你的问题,请参考以下文章