所以我目前正在尝试为网络应用程序创建一个笔记本风格的模块。目前,它在鼠标事件方面工作得很好,但在使用触摸事件时却不行。
//TOUCH LISTENER
theCanvas.addEventListener("touchstart", startT, false);
theCanvas.addEventListener("touchend", endT, false);
theCanvas.addEventListener("touchmove", moveT, false);
//MOUSE LISTENER
theCanvas.addEventListener("mousedown", start);
theCanvas.addEventListener("mouseup", end);
theCanvas.addEventListener("mousemove", move, false);
//MOUSE EVENTS
function start(event) {
if (event.button === MAIN_MOUSE_BUTTON) {
shouldDraw = true;
setLineProperties(theContext);
theContext.beginPath();
let elementRect = event.target.getBoundingClientRect();
theContext.moveTo(event.clientX - elementRect.left, event.clientY - elementRect.top);
console.log(PenType(mode));
}
}
function end(event) {
if (event.button === MAIN_MOUSE_BUTTON) {
shouldDraw = false;
}
}
function move(event) {
if (shouldDraw) {
let elementRect = event.target.getBoundingClientRect();
theContext.lineTo(event.clientX - elementRect.left, event.clientY - elementRect.top);
theContext.stroke()
} …
Run Code Online (Sandbox Code Playgroud) 假设您有一个超级视图,其尺寸小于其子视图。您将clipsToBound
超级视图的属性设置为false
。如果点击子视图超出父视图边界的突出区域,为什么命中测试返回 nil?
我的理解是,命中测试从子视图开始,一直到超级视图。那么为什么晚于子视图测试的父视图的属性很重要呢?或者命中测试是否从根开始到树视图(例如视图控制器 -> 主视图 -> 子视图)?
我从这里找到了一个自定义命中测试,它确实允许您点击超级视图边界之外的子视图区域,但我不确定为什么反转子视图的顺序会产生影响(它有效,我是只是不知道为什么)。我的示例甚至只有一个子视图。
class ViewController: UIViewController {
let superview = CustomSuperview(frame: CGRect(origin: .zero, size: .init(width: 100, height: 100)))
let subview = UIView(frame: CGRect(origin: .zero, size: .init(width: 200, height: 200)))
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(self.superview)
self.superview.backgroundColor = .red
self.superview.clipsToBounds = false
self.superview.addSubview(self.subview)
self.subview.backgroundColor = .blue
let tap = UITapGestureRecognizer(target: self, action: #selector(tapped))
self.subview.addGestureRecognizer(tap)
}
@objc func tapped(_ sender: UIGestureRecognizer) {
print("tapped")
}
}
class CustomSuperview: UIView {
override func hitTest(_ …
Run Code Online (Sandbox Code Playgroud) 当我触摸屏幕时,我有以下方法来处理:
public boolean onTouchEvent(MotionEvent event) {
boolean touchDown = true;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i(TAG,"touching the screen: YES");
case MotionEvent.ACTION_UP:
touchDown = false;
Log.i(TAG,"touching the screen: NO");
}
return touchDown;
}
Run Code Online (Sandbox Code Playgroud)
当我触摸屏幕而不移开手指时Logcat的结果是:
touching the screen: YES
touching the screen: NO
Run Code Online (Sandbox Code Playgroud)
直到我从屏幕上释放myfinger,我才想要显示第二个日志.
我做错了什么?
谢谢.
以下代码显示了#wrap-footer
单击时向下滑动调用的菜单#menu-button
.单击页面上除菜单之外的任何位置使其向上滑动.
当菜单可见时,#menu-button
添加了一个名为"menu-open"的类(用于样式).再次隐藏菜单时,将删除该类.
请注意,我用的选择#wrap-header
,#wrap-pre-footer
,#wrap-content
而不是仅仅html
或document
与iPhone不承认这些.
$(document).ready(function(){
$("#menu-button a").hide();
$('#menu-button').append('Menu');
$('#wrap-header,#wrap-pre-footer,#wrap-content').click(function() {
$('#wrap-footer').slideUp('slow');
$('#menu-button').removeClass('menu-open');
});
$('#menu-button').click(function(event){
event.stopPropagation();
$('#menu-button').toggleClass('menu-open');
$('#wrap-footer').slideToggle('slow');
});
$("#wrap-footer").click(function(e) {
e.stopPropagation();
});
});
Run Code Online (Sandbox Code Playgroud)
在桌面浏览器上一切都很好.但是在iPhone上,slideToggle工作正常,但是toggleClass永远不会删除该类.因此,如果菜单处于打开状态,则单击页面(但不是#menu-button
或#wrap-footer
)会最小化菜单并删除该类,但#menu-button
仅单击最小化菜单并且不会删除该类.
谢谢
当他/她触摸屏幕上的特定位置时,我想给用户一个触觉反馈,由x和y坐标限定,如矩形,如下所示:
if (x > 050
&& x < 100
&& y > 50
&& y < 100) {
// do some code
//then enter haptics feedback
}
Run Code Online (Sandbox Code Playgroud)
我得到的唯一方法是将触觉添加到某些视图,如按钮,是否适用于一般的触摸事件?
提前致谢
这是一个简单的问题.有没有办法在jQuery或Javascript中确定touchmove事件的速度?我使用css来抓取元素并让它可以抓取,这样可以正常但是如果我更快地移动手指,我不太可能移动到阈值距离但我确实打算翻页,所以有没有办法我可以确定javascript或jQuery中触摸移动事件的移动速度,我可以将阈值调整为较小的值以补偿速度?
var startX, endX, difference, threshold;
var startTime, endTime, timeDiff = 151;
$('#animate')
.bind("touchstart", function (e){
e.preventDefault();
var d = new Date();
startTime = d.getTime();
startX = e.originalEvent.touches[0].pageX; //starting point
})
.bind("touchmove", function (e){
e.preventDefault();
endX =e.originalEvent.changedTouches[0].pageX; //Get the information for finger
difference = startX - endX; //calculate the distance moved.
var moved = minusScreen - difference; //determine the affected css value.
$(this).css("left",moved); //this makes the element moves with my finger.
})
.bind("touchend", function (e) {
var date = new …
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用 ViewPager 创建用于滑动图像的滑块。一切工作正常,除了我必须双击缩放图像。但双击在 ViewPager 上不起作用。我尝试了很多解决方案但没有成功。任何帮助表示赞赏。
谢谢
在不停止主 UI 线程的情况下检查屏幕是否被触摸 2 秒或更长时间的最佳且更优化的策略是什么?
我已经检查了一些示例代码,但我不确定哪种是实现它的最佳方法,而且我还需要在不停止主 UI 线程的情况下完成它。
谢谢
我想在视图中使用自定义触摸事件.有一个Web视图,它是此视图的子视图.我重写了touchBegan和其他功能,但它没有运行.