Overriding method with selector 'touchesBegan:withEvent:' has incompatible type '(NSSet, UIEvent) -> ()'
Swift 1.2 (Xcode 6.3) introduced a native Set
type that bridgeswith NSSet
. This is mentioned in the Swift blog and in theXcode 6.3 release notes, but apparently not yet added to the official documentation (update: As Ahmad Ghadiri noted, it is documented now).
The UIResponder
method is now declared as
func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
and you can override it like this:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { if let touch = touches.first as? UITouch { // ... } super.touchesBegan(touches , withEvent:event)}
Update for Swift 2 (Xcode 7): (Compare Override func error in Swift 2)
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { if let touch = touches.first { // ... } super.touchesBegan(touches, withEvent:event)}
Update for Swift 3:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { if let touch = touches.first { // ... } super.touchesBegan(touches, with: event)}
With xCode 7 and swift 2.0, use following code:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { if let touch = touches.first{ print("\(touch)") } super.touchesBegan(touches, withEvent: event)}override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { if let touch = touches.first{ print("\(touch)") } super.touchesEnded(touches, withEvent: event)}override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { if let touch = touches.first{ print("\(touch)") } super.touchesMoved(touches, withEvent: event)}
Using Swift 3 and Xcode 8
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {}override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {}override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {}override func touchesCancelled(_ touches: Set<UITouch>?, with event: UIEvent?) {// Don't forget to add "?" after Set<UITouch>}