在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 ())
。