3

这在以前完美地工作过:

func doSomethingOnDrag(sender: UIButton, event: UIEvent) {
    let touch = event.touchesForView(sender).AnyObject() as UITouch
    let location = touch.locationInView(sender)
}

但在 Xcode 6.3 中,我现在收到错误消息:

无法在没有参数的情况下调用“AnyObject”

我该如何解决?

4

2 回答 2

6

在 1.2 中,touchesForView现在返回原生 SwiftSet而不是NSSet,并且Set没有anyObject()方法。

它确实有一个first方法,这几乎是一样的。另请注意,您将无法再使用as?,您必须使用as?并处理 nil 的可能性,这是一种方法:

func doSomethingOnDrag(sender: UIButton, event: UIEvent) {
    if let touch = event.touchesForView(sender)?.first as? UITouch,
           location = touch.locationInView(sender) {
            // use location
    }
}
于 2015-04-10T18:00:18.927 回答
0
func doSomethingOnDrag(sender: UIButton, event: UIEvent) {
    let buttonView = sender as! UIView;
    let touches : Set<UITouch> = event.touchesForView(buttonView)!
    let touch = touches.first!
    let location = touch.locationInView(buttonView)
}
于 2015-06-22T12:32:40.970 回答