スライダー(YouTubeの下部にあるようなビデオのコントロールとして動作)を作成し、最大(継続時間)と最小値を設定しました。そして、SeekToTime
を使ってcurrentTimeを変更してください。今、ユーザはスライダの親指をスライドさせて値を変更することができますUISliderをタップして値を設定する
私が達成したいのは、スライダの任意の場所をタップしてビデオの現在の時間を設定させることです。
私はthis answerからのアプローチを持っていない、と私は私の場合に適用しようとしたが、それは
class ViewController: UIViewController, PlayerDelegate {
var slider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
// Setup the slider
}
func sliderTapped(gestureRecognizer: UIGestureRecognizer) {
// print("A")
let pointTapped: CGPoint = gestureRecognizer.locationInView(self.view)
let positionOfSlider: CGPoint = slider.frame.origin
let widthOfSlider: CGFloat = slider.frame.size.width
let newValue = ((pointTapped.x - positionOfSlider.x) * CGFloat(slider.maximumValue)/widthOfSlider)
slider.setValue(Float(newValue), animated: true)
}
}
を動作させることができなかった私は、これは動作するはずと思ったが、運。それから、ログに "A"を印刷しようとするとデバッグを試みましたが、明らかにそれはsliderTapped()
機能には入りません。
私は間違っていますか?それとも私が達成しようとしているものを達成するためのより良い方法はありますか?
あなたはジェスチャー認識のデリゲートを設定するのを忘れたのか? – whatever0010011