在触摸设备上处理OnMouseOver javascript事件是否有首选替代或最佳做法?我只能想到将所有事件转换为OnMouseClick.不幸的是,这会混淆悬停光标触发的事件与单击光标触发的事件之间的差异.
是否有任何替代方案或解决方案对于将与鼠标设备和触摸设备一起使用的网页的用户体验的破坏性较小?
我有一个UIPickerView和,didSelectRow当点击选定的行时不调用该方法.我需要处理这个案子.有任何想法吗?
当我在平板电脑模式下在Windows 10上运行WinForms(或Delphi,请参见最后)应用程序时,当输入框被聚焦时,触摸键盘不会自动弹出.
我相信这应该自动发生,无需任何额外的代码/设置.
对于测试,我有一个单一TextBox控件的最简单的VS 2015 WinForms桌面应用程序.
它只是Visual Studio创建的默认Windows窗体应用程序C#项目.没有添加代码,没有更改属性.刚刚TextBox添加,通过从工具箱中删除(再次没有更改属性):
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox1.Location = new System.Drawing.Point(64, 27);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.TabIndex = 0;
Run Code Online (Sandbox Code Playgroud)
要验证我的假设是弹出应该是自动的:
我试图notepad.exe在Windows 10上运行Windows XP版本.它会自动弹出触摸键盘.我怀疑Windows XP对触摸键盘有任何明确的支持.
我也尝试了一些古老的MFC应用程序(例如2005年的FileZilla 2.2.15).它还会在所有输入框上弹出触摸键盘.同样,我很确定,MFC也没有明确支持触摸键盘.
对于基于wxWidgets构建的应用程序(例如FileZilla 3.x)也是如此.
看起来WinForms中有一些东西会阻止自动弹出窗口.有趣的是,自动弹出功能:
ComboBox带DropDownStyle = DropDown)TextBox.PasswordChar)RichTextBox)我已经通过运行它看到了关于显式弹出窗口的所有提示TabTip.exe.例如:
大多数"解决方案"都提供如下代码:
var progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; …Run Code Online (Sandbox Code Playgroud) 我对Android中的两种方法感到困惑.似乎这两种方法都告诉你它是什么类型的事件,即它是一个向下或向上的事件.
我什么时候用哪个?
public void onTouchEvent(MotionEvent e)
Run Code Online (Sandbox Code Playgroud)
请不要引用文档,因为我读了它,并且我没有看到任何参数可以提供给任何一种方法来获得不同的东西.
public final int getAction ()
Run Code Online (Sandbox Code Playgroud)
和
public final int getActionMasked()
Run Code Online (Sandbox Code Playgroud) 我正在搞乱触摸滑块上的触摸事件,我不断收到以下错误:
忽略尝试取消具有cancelable = false的touchmove事件,例如因为滚动正在进行且无法中断.
我不确定是什么导致了这个问题,我不熟悉触摸事件,似乎无法解决这个问题.
以下是处理触摸事件的代码:
Slider.prototype.isSwipe = function(threshold) {
return Math.abs(deltaX) > Math.max(threshold, Math.abs(deltaY));
}
Slider.prototype.touchStart = function(e) {
if (this._isSliding) return false;
touchMoving = true;
deltaX = deltaY = 0;
if (e.originalEvent.touches.length === 1) {
startX = e.originalEvent.touches[0].pageX;
startY = e.originalEvent.touches[0].pageY;
this._$slider.on('touchmove touchcancel', this.touchMove.bind(this)).one('touchend', this.touchEnd.bind(this));
isFlick = true;
window.setTimeout(function() {
isFlick = false;
}, flickTimeout);
}
}
Slider.prototype.touchMove = function(e) {
deltaX = startX - e.originalEvent.touches[0].pageX;
deltaY = startY - e.originalEvent.touches[0].pageY;
if(this.isSwipe(swipeThreshold)) {
e.preventDefault();
e.stopPropagation();
swiping = true; …Run Code Online (Sandbox Code Playgroud) 我有一些代码可以更改表的类.在手机上,有时桌子对于屏幕来说太宽,用户将拖动/滚动以查看内容.但是,当他们触摸并拖动桌子时,它会触发每次拖动的触发.
我如何测试看看触摸是否是由于触摸拖动而产生的?我尝试跟踪dragstart和dragend,但我无法让它工作,这似乎是一种不优雅的方法.有什么我可以添加到下面的内容基本上可以确定,"这个touchend是否已经结束了?"
$("#resultTable").on("touchend","#resultTable td",function(){
$(this).toggleClass('stay');
});
Run Code Online (Sandbox Code Playgroud)
我提前感谢您的帮助.
PS - 使用最新的jquery,而常规点击工作,与touchend相比,它非常慢.
我正在实现OnTouchListener并接收MotionEvent对象.一些ACTION_MOVE事件报告绝对X/Y坐标,而一些报告相对坐标.
我怎么能问MotionEvent它目前代表什么样的坐标?
我想在触摸名为(image1)的uiimageview时调用我的按钮单击事件.Imageview放在uiview(view1)中.
这是我的代码:
- (IBAction)buttonClicked:(id)sender
{
myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(alphabutt:) userInfo:nil repeats:NO];
}
-(IBAction)alphabutt:(id)sender
{
NSLog(@"alphabutt!");
if(i==1)
{
NSLog(@"i==1");
[image1 setImage:[UIImage imageNamed:@"appleimg.jpg"]];
[view1 addSubview:image1];
transition1 = [CATransition animation];
transition1.duration = 0.75;
transition1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition1.type=kCATransitionReveal;
transition1.subtype=kCATransitionFromRight;
transitioning = YES;
transition1.delegate = self;
[image1.layer addAnimation:transition1 forKey:nil];
}
if(i==2)
{
NSLog(@"i==2");
[image1 setImage:[UIImage imageNamed:@"boatimg.jpg"]];
[view1 addSubview:image1];
transition2 = [CATransition animation];
transition2.duration = 0.75;
transition2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition2.type=kCATransitionFade;
transition2.subtype=kCATransitionFromRight;
transitioning = YES;
transition2.delegate = self;
[image1.layer addAnimation:transition2 forKey:nil];
i=0;
} …Run Code Online (Sandbox Code Playgroud) 在HTML网站上,您有一个固定的元素,如下所示:
<div id="fixed">
<p>Some content</p>
</div>
Run Code Online (Sandbox Code Playgroud)
它有这个CSS:
#fixed { height:150px; position:fixed; top:0; left:0; z-index:10000; }
Run Code Online (Sandbox Code Playgroud)
当您在移动设备(或任何支持触摸屏的设备)上查看此页面,并且您捏合屏幕以放大时,固定元素将与所有其他内容一起放大(它会变大).放大到足够远时,它变得如此之大,以至于它几乎完全覆盖了它下面的所有内容.
一个实际的用例是UI,如顶部的固定导航栏,或屏幕一角的浮动按钮.
如何防止单个元素在浏览器中调整大小,并使其始终保持相同的大小?
好吧我觉得我疯了
我正在看iOs 6.0上的Mobile Safari.我似乎无法确定任何押韵或理由,因为点击元素会触发点击.在许多情况下,似乎我需要点击一次以触发悬停,然后再次触发点击.
的移动Safari规范说:" ...由一个手指和两手指手势生成的事件的流动是有条件的根据所选的元素是否是可点击或滚动...一个可点击的元件是一个链接,表格元件,图像映射区域或使用mousemove,mousedown,mouseup或onclick处理程序的任何其他元素......由于这些差异,您可能需要将某些元素更改为可单击元素......"
它继续建议开发人员"...添加一个虚拟onclick处理程序,onclick ="void(0)",以便iOS上的Safari将span元素识别为可点击元素."
但是,我的测试表明这些陈述是错误的.
JsFiddle:http://jsfiddle.net/6Ymcy/1/
HTML
<div id="plain-div" onclick="void(0)">Plain Div</div>
Run Code Online (Sandbox Code Playgroud)
JS
document.getElementById('plain-div').addEventListener('click', function() {
alert('click');
});
Run Code Online (Sandbox Code Playgroud)
尝试在iPad上点击元素. 什么都没发生
但我离题了.对我来说重要的是找出以下问题:
确切地说,点击元素时确定的标准是什么?会在第一次点击时触发"点击"事件? 而不是在第一次点击时触发"悬停"事件,在第二次点击时触发"点击"事件.
在我的测试中,锚元素是我可以在第一次点击时触发点击的唯一元素,然后,仅偶尔和不一致.
这是我开始感到疯狂的地方.我在网上广泛搜索,发现这个问题几乎没有.只有我吗?!有没有人知道哪里有关于双击标准和/或处理这些限制的方法的讨论?
我很乐意回答问题/要求.
谢谢!
touch ×10
javascript ×3
android ×2
ios ×2
iphone ×2
jquery ×2
tap ×2
c# ×1
click ×1
css ×1
delphi ×1
mobile ×1
motionevent ×1
select ×1
slider ×1
touch-event ×1
uiimageview ×1
uipickerview ×1
windows ×1
winforms ×1