2016-10-05 9 views
6

में वीडियो चलाते समय स्पर्श का पता लगाने के लिए मैंने प्रोग्रामरिक रूप से AVPlayerViewController को UIViewController में जोड़ा है। जब खिलाड़ी खेलना समाप्त कर देता है तो मैं अधिसूचना प्राप्त करने में सक्षम हूं (playerDidFinishPlaying)। मैं यह जानना चाहूंगा कि वीडियो चलाते समय उपयोगकर्ता ने स्क्रीन को छुआ है या नहीं और मुझे कोई संबंधित सूचनाएं नहीं मिली हैं।स्विफ्ट में, AVPlayerViewController

कस्टम बेस कक्षा:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

ViewController:

स्विफ्ट 2:

+0

जब उपयोगकर्ता आगे/पिछड़ा बटन दबाता है तो स्पर्श का पता कैसे लगाया जाए? – pkc456

उत्तर

6

समाधान AVPlayerViewController के बेस वर्ग बना सकते हैं और touches​Began(_:​with:​) विधि ओवरराइड करने के लिए है

let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(URL: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.presentViewController(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

स्विफ्ट 3:

कस्टम बेस कक्षा:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

देखें नियंत्रक:

let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(url: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.present(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

import AVKit और import AVFoundation के लिए मत भूलना।

प्रत्येक बार जब आप playerViewController पर टैप करते हैं, तो "स्पर्श्सबैगन" मुद्रित किया जाएगा।

+2

संदर्भ प्रलेखन के बारे में कोई भी विचार: _Do AVPlayerViewController उपclass नहीं है। इस वर्ग के तरीकों को ओवरराइड करना असमर्थित है और परिणाम अपरिभाषित व्यवहार_ में परिणाम देता है। – Bruce

+1

@ ब्रूस की टिप्पणी का जिक्र करते हुए ([ऐप्पल दस्तावेज़ीकरण] (https://developer.apple.com/reference/avkit/avplayerviewcontroller)): _touchesBegan_ एक [यूआईआरस्पॉन्डर] है (https://developer.apple.com/reference/uikit/uiresponder) विधि (यूआईआरएसस्पोन्डर-> UIViewController-> AVPlayerViewController)। हमारे मामले में, यूआईआरस्पोन्डर को टच इवेंट्स का ख्याल रखना चाहिए, यह AVPlayerViewController की मूल कार्यक्षमता से संबंधित नहीं है यानी इस विधि को ओवरराइड करना इस बात पर प्रतिबिंबित नहीं करता है कि एवीप्लेयर व्यू कंट्रोलर वीडियो के साथ काम करने के लिए कैसे काम करता है- उदाहरण के लिए, ऐसा करने वाले तरीके नहीं होना चाहिए अधिरोहित। नोट के लिए धन्यवाद। –

+0

@ अहमदएफ, उपयोगकर्ता ने आगे/पिछड़ा बटन दबाए जाने पर स्पर्श का पता कैसे लगाया? – pkc456

संबंधित मुद्दे