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)
}
这在之前非常有效:
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)
}