Ios 用手指移动轻拍手势
据我观察,轻触手势会在手指移动时取消该事件。以下是《事件处理指南》的屏幕截图: 我已经用下面的代码做了一些测试。不,它取消了Ios 用手指移动轻拍手势,ios,swift,event-handling,uitapgesturerecognizer,Ios,Swift,Event Handling,Uitapgesturerecognizer,据我观察,轻触手势会在手指移动时取消该事件。以下是《事件处理指南》的屏幕截图: 我已经用下面的代码做了一些测试。不,它取消了 @IBAction func dosomething(sender: UITapGestureRecognizer) { //called by gesture recognizer } @IBOutlet var red: UIView! @IBOutlet var green: UIVi
@IBAction func dosomething(sender: UITapGestureRecognizer) {
//called by gesture recognizer
}
@IBOutlet var red: UIView!
@IBOutlet var green: UIView!
@IBOutlet var yellow: UIView!
@IBOutlet var white: UIView!
//setting delegate when outlet get set.
@IBOutlet var tapGesture: UITapGestureRecognizer! { didSet { outlet.delegate = self
}}
//delegate func shouldReceiveTouch
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view == red {
println("ez")
return true
}else if touch.view == green{
println("bp")
return false
}else { view.backgroundColor = UIColor.clearColor()
return true}
}
所以如果我是对的,当调用
touchesMoved:
时,tapGestureRecognizer
一定失败了,但根据图,它没有失败。这里我遗漏了什么?在iPhone应用程序中,当用户在屏幕上轻触或拖动手指时,会发生两件事:
UITouch
对象UIGestureRecognitor
可能会抓取UITouch
对象,并尝试推断用户正在做什么(向内/向外平移、向上/向下滚动、在浏览器中的页面之间滑动等)UIgestureRecognitor
将不知道用户在做什么。当UITouch
对象不再位于当前视图之外时,iPhone将知道用户何时完成操作
问题是,uigesturecognizer
不会“失败”,而是在用户的触摸被“取消”或不在视图之外之前,它没有任何价值或意义。图1-6右侧的第四列可以看出这一点。另一个问题是水龙头不是你想象的那样。只需轻轻一碰。触摸一开始就结束了。如果您试图在屏幕上滑动或拖动某个对象,则需要一个不同的UIGestureRecognitor
对象,例如UIPangestureRecognitor
,UILongPressGestureRecognitor
,UIWipeGestureRecognitor
等
如果要查看此操作,请尝试在iOS单视图应用程序中执行以下操作:
ViewController.swift
文件ViewController
分类为UIViewController
的子类UIgestureRecognitizerDelegate
协议UITapGestureRecognizer
对象和UITouch
对象,并将它们链接到情节提要中的单个视图uigesturecognizer
对象的委托
设置为UIViewController
或self
touchesbeated:withEvent:
、touchesMoved:withEvent:
、touchesend:withEvent
和touchescanceled:withEvent
方法中添加一些println
语句来检查触摸的开始和结束时间您可以直接在中了解这些方法的工作原理。感谢您的关注。我认为你所说的对于一般的UIgestureRecognitor对象是正确的。但说到UITapGestureRecognitizer,当我移动手指时,TapSignature似乎被取消了。在提问之前,我已经做了一些测试。我仍然不清楚:|在我列出你应该尝试的东西的段落之前,我对我的答案进行了编辑。主要的想法是,你的轻拍手势只接受轻拍式的行为。你不能简单地按住水龙头,期望它不会取消。你需要另一种UIgestureRecognitor对象,它允许用户按住鼠标点击和/或在屏幕上拖动鼠标。我已经用我尝试过的方法编辑了我的问题。我同意你到目前为止所写的一切。我不是故意要实现一些代码。我只是跟着导游走。在这里,苹果椅子人似乎犯了一个错误,在桌子上写了“tapGestureRecognizer”,而不是“GestureRecognizer”,顺便说一句,这是一个有用的答案。