在Swift中使用touchesMoved跟踪触摸

时间:2015-02-16 12:02:14

标签: ios swift uiview uigesturerecognizer uitouch

我在Swift中使用touchesMoved方法跟踪我的触摸,但是当我只刷屏幕时我的应用程序崩溃了。要清楚:当我按住触摸一会儿,然后移动时,它不会崩溃;当我只是立即滑动时,它崩溃了运行时错误:

  

locationInView:]:无法识别的选择器发送到实例

我的代码如下所示:

   override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
        println("MOVED")

        var aTouch: AnyObject = touches as AnyObject

        var location = aTouch.locationInView(self.imageViewer)

        self.textEdit.frame = CGRectMake(0, location.y, self.view.frame.width, 44)
    }

对于为什么会发生这种情况的任何建议都将不胜感激。

编辑:

不知道为什么touchesBegan方法崩溃了,但我使用这样的手势识别器获得了预期的效果:

func buttonLongPressed(gestureRecognizer:UIGestureRecognizer){

    if gestureRecognizer.state == UIGestureRecognizerState.Changed{
    self.textEdit.frame = CGRectMake(0, gestureRecognizer.locationInView(self.view).y, self.view.frame.width, 44)
    }
}

希望这有帮助。

1 个答案:

答案 0 :(得分:0)

这是因为您将触摸(这是一个Set)分配给aTouch变量:

var aTouch: AnyObject = touches as AnyObject

尝试将其更改为:

var aTouch: AnyObject = touches.anyObject() as UITouch