Unrecognized selector sent to instance, tap gesture recognizer on Viewcontroller subview
<p>I am getting the following error when trying to add a tap gesture recognizer to a subview to remove ads after a purchase. I've googled and can't find out what I'm doing wrong.</p>

<pre><code>    2016-11-28 20:48:29.277 SquaresApp[12766:589296] -[SquaresApp.RemoveAdsView handleTap]: unrecognized selector sent to instance 0x7f84ffc0b1e0
    2016-11-28 20:48:29.301 SquaresApp[12766:589296] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SquaresApp.RemoveAdsView handleTap]: unrecognized selector sent to instance 0x7f84ffc0b1e0'
    *** First throw call stack:
    (
    0   CoreFoundation                      0x00000001107c434b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010fbe921e objc_exception_throw + 48
    2   CoreFoundation                      0x0000000110833f34 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x0000000110749c15 ___forwarding___ + 1013
    4   CoreFoundation                      0x0000000110749798 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x0000000111640e41 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 57
    6   UIKit                               0x0000000111648be0 _UIGestureRecognizerSendTargetActions + 109
    7   UIKit                               0x00000001116466af _UIGestureRecognizerSendActions + 227
    8   UIKit                               0x000000011164593b -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 891
    9   UIKit                               0x0000000111631a0e _UIGestureEnvironmentUpdate + 1395
    10  UIKit                               0x0000000111631453 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 521
    11  UIKit                               0x0000000111630636 -[UIGestureEnvironment _updateGesturesForEvent:window:] + 286
    12  UIKit                               0x000000011116f3b9 -[UIWindow sendEvent:] + 3989
    13  UIKit                               0x000000011111c63f -[UIApplication sendEvent:] + 371
    14  UIKit                               0x000000011190e71d __dispatchPreprocessedEventFromEventQueue + 3248
    15  UIKit                               0x00000001119073c7 __handleEventQueue + 4879
    16  CoreFoundation                      0x0000000110769311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    17  CoreFoundation                      0x000000011074e59c __CFRunLoopDoSources0 + 556
    18  CoreFoundation                      0x000000011074da86 __CFRunLoopRun + 918
    19  CoreFoundation                      0x000000011074d494 CFRunLoopRunSpecific + 420
    20  GraphicsServices                    0x0000000114a1ea6f GSEventRunModal + 161
    21  UIKit                               0x00000001110fe964 UIApplicationMain + 159
    22  SquaresApp                          0x000000010c0f80ef main + 111
    23  libdyld.dylib                       0x000000011324068d start + 1
    )
    libc++abi.dylib: terminating with uncaught exception of type NSException
</code></pre>

<p>heres my view controller:</p>

<pre><code>    import UIKit
    import StoreKit
    import OAStackView
    import SnapKit
    import GoogleMobileAds

    class SquaresViewController: UIViewController, SKProductsRequestDelegate, SKPaymentTransactionObserver {

        let defaults = UserDefaults.standard
        let stackView = OAStackView(frame: CGRect.zero)
        let titleView = TitleView(frame: CGRect.zero)
        let bannerView = BannerView(frame: CGRect.zero)
        let removeAdsView = RemoveAdsView(frame: CGRect.zero)

        var squaresCollectionView: UICollectionView!
        var productID: NSString?

        override func viewDidLoad() {

            productID = "5daysubscription"
            super.viewDidLoad()
            SKPaymentQueue.default().add(self)

            view.addSubview(stackView)

            addStackView()
            addTitleView()
            addCollectionView()
            addBannerView()
            addRemoveAdsView()

            removeAdsView.isUserInteractionEnabled = true
            let tap = UITapGestureRecognizer(target: self.removeAdsView, action: #selector(self.handleTap))
            tap.numberOfTapsRequired = 1
            removeAdsView.addGestureRecognizer(tap)

            if (defaults.bool(forKey: "purchased")){

                bannerView.isHidden = true
                removeAdsView.isHidden = true
            }
            else if (!defaults.bool(forKey: "stonerPurchased")){
                print("false")
            }

        }

        func addRemoveAdsView() {

            stackView.addArrangedSubview(removeAdsView)

            removeAdsView.snp.makeConstraints { make in
                make.height.equalTo(view.snp.height).multipliedBy(0.1)
                make.bottom.equalTo(view.snp.bottom)
                make.width.equalTo(stackView.snp.width)
            }
        }

        func handleTap() {

            if (SKPaymentQueue.canMakePayments())
            {
                let productID:NSSet = NSSet(object: self.productID!);
                let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set&lt;String&gt;);
                productsRequest.delegate = self;
                productsRequest.start();
                print("Fetching Products");
            }else{
                print("Can't make purchases");
            }

        }
    }
</code></pre>

<p>the subview:</p>

<pre><code>    import UIKit
    import SnapKit

    class RemoveAdsView: UIView {

        var removeAdsText: UILabel!

        override init(frame: CGRect) {
            super.init(frame: frame)
            self.translatesAutoresizingMaskIntoConstraints = false
            self.backgroundColor = UIColor.gray

            addCustomView()
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }

        func addCustomView() {

            removeAdsText = UILabel(frame: CGRect.zero)

            removeAdsText.text = "Tap here to remove ads."
            removeAdsText.textAlignment = .center
            removeAdsText.numberOfLines = 0

            self.addSubview(removeAdsText)
            removeAdsText.translatesAutoresizingMaskIntoConstraints = false

            removeAdsText.snp.makeConstraints { make in
                make.edges.equalTo( self.snp.edges )
            }
        }

    }
</code></pre>

<p>Ive removed some functions for readability(StoreKit and the others mentioned in view did load). Thanks for any help.</p>