按钮控件不响应Swifty`Player`包视图控制器中的点击

时间:2016-11-15 13:00:15

标签: ios swift player-swift

pod 'Player'应用中使用iOS 9.0播放视频。我已经将Player类子类化为添加UIButton叠加层以关闭窗口。

看起来很好,并且在点按时突出显示动画,但在内部触摸时不会调用closeTapped

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")
    }
}

我也试过closeTapped(sender: Any?),没有帮助。

为什么closeTapped没有被调用?

2 个答案:

答案 0 :(得分:1)

您无需在按钮上添加TapGestureRecognizer。对于swift 3.0,您可以这样做:

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

func closeTapped(sender: UIButton) {
}

答案 1 :(得分:0)

我认为按钮顶部添加了UITapGestureRecognizer()。它本身有一个#selector。所以你的按钮默认.touchUpInside控制器没有调用。

尝试评论

  

// closeButton.addGestureRecognizer(UITapGestureRecognizer())

这一行。

让我知道这有用与否。