从Storyboard中设置IBAction时,触摸“拖动距离”

我知道如何设置UIPanGesture事件和识别器,并获取我需要的数据时,我编程创build它们。

不过,我正在尝试学习如何使用故事板并使用IBOutlets。

我拖了一个IBAction的“触摸拖动里面”。

@IBAction func dragButtonDragEvent(sender: AnyObject) { println(sender) } 

问题是我得到的发件人对象只是button本身。

有没有办法获得拖动距离或拖动事件数据时使用IBAction?

我试过了

 @IBAction func dragButtonDragEvent(sender: AnyObject) { var drag:UIPanGestureRecognizer = sender as UIPanGestureRecognizer println(drag.state) } 

但是,我得到了一个错误的内存访问错误和println不执行,因为发件人是button不是事件。

你可以build议如何使用Touch Drag Inside事件从故事板连接时?

用这样的事件参数创build@IBAction函数:

 @IBAction func touchDragInsideAction(sender: AnyObject, event: UIEvent) { // if the sender is a button if let button = sender as? UIButton { // get the touch inside the button let touch = event.touchesForView(button)?.anyObject() as UITouch // println the touch location println(touch.locationInView(button)) } } 

这将在用户在button上拖动手指时在button上打印用户的触摸位置。 然后可以使用第一个点和最后一个点来获得距离。

请注意,如果您正在修改现有函数的方法签名,则必须在故事板中重新连接它。