1

Using pod 'Player' in an iOS 9.0 app to play a video. I've subclassed Player class to add a UIButton overlay for closing the window.

It appears fine and has highlighting animation when tapped, but closeTapped isn't called when touching up inside.

import UIKit
import Player

class PlayerViewController: Player, PlayerDelegate {

    func install() {
        view.frame = presentor.view.bounds 
        presentor.addChildViewController(self)
        presentor.view.addSubview(view)
        didMove(toParentViewController: presentor)

        let closeImage = UIImage(named: "close")!
        let closeButton = UIButton(type: .custom)
        view.addSubview(closeButton)
        closeButton.setImage(closeImage, for: .normal)
        closeButton.autoPinEdge(toSuperviewEdge: .top, withInset: 25)
        closeButton.autoPinEdge(toSuperviewEdge: .right, withInset: 15)
        closeButton.autoSetDimensions(to: CGSize(width: 50, height: 50))
        closeButton.addGestureRecognizer(UITapGestureRecognizer())

        closeButton.addTarget(self, action: #selector(closeTapped), for: .touchUpInside)
    }

    func closeTapped() {
         logger.debug("Player close tapped")
    }
}

I also tried having closeTapped(sender: Any?), didn't help.

Why isn't closeTapped called?

Kof
  • 23,893
  • 9
  • 56
  • 81
  • Try `closeButton.addTarget(self, action: #selector(PlayerViewController.closeTapped(_:), for: .touchUpInside)` and `closeTapped(_ sender: AnyObject)` – Idan Nov 15 '16 at 13:10

2 Answers2

1

You don't need to add a TapGestureRecognizer to the button. For swift 3.0 you can do it like this:

button.addTarget(self, action: #selector(closeTapped(sender:)), for: .touchUpInside)

func closeTapped(sender: UIButton) {
}
stefos
  • 1,235
  • 1
  • 10
  • 18
  • Oops, this `TapGestureRecognizer` is a leftover that should've been removed! Thanks – Kof Nov 15 '16 at 13:17
0

I think the top of your button u added a UITapGestureRecognizer(). Which itself has a #selector. So Your button default .touchUpInside controller is not calling.

Try with commenting

//closeButton.addGestureRecognizer(UITapGestureRecognizer())

this line.

Let me know is this helpful or not.