UITapGestureRecognizer unrecognized selector sent to instance

I’ve searched for solutions to this problem but couldn’t find anything that seems to address it in my case. I’m getting the above exception from a UITapGestureRecognizer.

Here’s the simplified code:

  • Display flaw with HTML input type number on iPhone iOS/Safari
  • Is it possible to login in twitter within an iOS app and not use the twitter account that is stored in the settings of the device?
  • CocoaPods libraries errors building for some iOS simulators
  • Swift Optional of Optional
  • Apple Watch icon issue upon submission
  • iphone app allow background music to continue to play
  • import UIKit;
    
    class ViewController : UIViewController, UIScrollViewDelegate
    {
        @IBOutlet weak var scrollView:UIScrollView!;
        var imageView:UIImageView!;
    
        override func viewDidLoad()
        {
            super.viewDidLoad();
    
            ... set up imageView/scrollView here ...
    
            let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped");
            doubleTapRecognizer.numberOfTapsRequired = 2;
            doubleTapRecognizer.numberOfTouchesRequired = 1;
            scrollView.addGestureRecognizer(doubleTapRecognizer);
        }
    
    
        func onScrollViewDoubleTapped(recognizer:UITapGestureRecognizer)
        {
        }
    }
    

    Can anyone tell what is wrong with this code? It seems all correct to me. I suspect that it has to do with assigning ViewController as delegate to scrollView (or vice versa)? However the ViewController is set as the delegate to scrollView. But maybe it’s something else that causes this error?

    3 Solutions Collect From Internet About “UITapGestureRecognizer unrecognized selector sent to instance”

    Try adding a colon to your selector string.

    let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped:");
    

    As cabellicar123 mentioned, this indicates that the selector takes an argument.

    Also try adding a parameter to your method:

    ...(target: self, action: "yourMethodName:")
    
    func yourMethodName(sender: AnyObject?)
    {
        println("Clicked yourMethodName")
    }
    

    Maybe could help someone: I had this error because I declared private the selector method:

    func setup() {
      let singleFingerTap = UITapGestureRecognizer(target: self, action: "didTapOnViewInteraction:")
      singleFingerTap.numberOfTapsRequired = 1
      self.viewInteraction.addGestureRecognizer(singleFingerTap)
    }
    
    private func didTapOnViewInteraction(recognizer: UITapGestureRecognizer) {
    
    }
    

    Removing “private” keyword, all works great!