Forze Forze - 4 months ago 665
iOS Question

Swift 3: Unrecognized selector sent to instance Xcode 8

I have programmatically created an

UIView
and added
UIPanGestureRecognizer
to it:

class ViewController: UIViewController{
var preludeView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

initViews()
createConstrants()

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector(("handleTap:")))
preludeView.addGestureRecognizer(panGestureRecognizer)
}

func handleTap(recognizer: UIPanGestureRecognizer) {
print("WORKING!!!!")
}

func initViews() {
...
}

func createConstrants() {
...
}
}


But when I am touching the view Xcode is throwing an error:


2016-07-13 09:24:29.918 Draft_Hypa_02[661:83024]
-[Draft_Hypa_02.ViewController handleTap:]: unrecognized selector sent to instance 0x17d94a10 2016-07-13 09:24:29.921
Draft_Hypa_02[661:83024] * Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[Draft_Hypa_02.ViewController
handleTap:]: unrecognized selector sent to instance 0x17d94a10'
*
First throw call stack: (0x249cf91b 0x2416ae17 0x249d52b5 0x249d2ee1 0x248fe238 0x294ae9eb 0x290e984f 0x28f7aff1 0x294afd4f
0x28f3ba57 0x28f38017 0x28f78ec9 0x28f7867b 0x28f49125 0x28f476d3
0x24991dff 0x249919ed 0x2498fd5b 0x248df229 0x248df015 0x25ecfac9
0x28fb1189 0x93144 0x24587873) libc++abi.dylib: terminating with
uncaught exception of type NSException


However, if I remove argument in the
handleTap
function and remove the colon in the
Selector(("handleTap:"))
, everything works fine!

Already spent a day to try to fix this issue and would be very appreciate for your help!

Answer

If you are using swift 3 your selector should be like this

#selector(self.handleTap(_:))