event.touchesForView().AnyObject() 在 Xcode 6.3 中不起作用

event.touchesForView().AnyObject() not working in Xcode 6.3

这在之前非常有效:

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

但在 Xcode 6.3 中,我现在得到错误:

Cannot invoke 'AnyObject' with no arguments

我该如何解决这个问题?

在 1.2 中,touchesForView 现在 returns 本地 Swift Set 而不是 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
    }
}
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)
}