我知道如何设置UIPanGesture事件和识别器,并以编程方式创建我需要的数据。
但是我正在尝试学习如何使用故事板并使用IBOutlets。
我已经拖了一个IBAction来“触摸拖动内部”。
@IBAction func dragButtonDragEvent(sender: AnyObject)
{
println(sender)
}
问题是我得到的发件人对象只是按钮本身。
使用IBAction时,有没有办法获取拖动距离或拖动事件数据?
我试过
@IBAction func dragButtonDragEvent(sender: AnyObject)
{
var drag:UIPanGestureRecognizer = sender as UIPanGestureRecognizer
println(drag.state)
}
但是我收到了错误的内存访问错误,并且没有执行println,因为发件人是按钮而不是事件。
从故事板连接时,您能否建议如何使用Touch Drag Inside事件?
答案 0 :(得分:2)
使用如下事件参数创建@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))
}
}
当用户将手指拖过按钮时,这将打印用户在按钮上的触摸位置。然后,您可以使用第一个点和最后一个点来获得距离。
请注意,如果您要修改现有功能的方法签名,则必须在故事板中重新连接它。
答案 1 :(得分:0)