按钮控件不响应 Swifty"播放器"包视图控制器中的点击



iOS 9.0应用程序中使用pod 'Player'播放视频。我已经子类化了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 ?

您不需要为按钮添加TapGestureRecognizer。对于swift 3.0,你可以这样做:

button.addTarget(self, action: #selector(closeTapped(sender:)), for: .touchUpInside)
func closeTapped(sender: UIButton) {
}

我认为你的按钮顶部添加了一个UITapGestureRecognizer()。它本身有一个#选择器。你的按钮默认。touchupinside控制器没有调用。

试着注释

//closeButton.addGestureRecognizer (UITapGestureRecognizer ())

最新更新